找回密码
 立即注册

QQ登录

只需一步,快速开始

星原力教育科技 首页 创客工坊 查看内容

基于Arduino制作调速遥控小车

2020-5-19 10:07| 发布者: lou| 查看: 2281| 评论: 0

摘要: 基于Arduino制作调速遥控小车借助于arduino硬件和mixly设计一个有线遥控小车,用4个按钮分别控制小车的前进、后退、加速和减速。(有线遥控小车)材料准备主要用到的材料有,一块Arduino UNO主控板,一个L298N电机驱 ...

基于Arduino制作调速遥控小车





借助于arduino硬件和mixly设计一个有线遥控小车,用4个按钮分别控制小车的前进、后退、加速和减速。


(有线遥控小车)


材料准备


主要用到的材料有,一块Arduino UNO主控板 ,一个L298N电机驱动板模块,用来驱动两路直流减速电机,两

个轮胎和直流减速电机,一个9V充电锂电池和电池扣,用来给Arduino UNO主控板和L298N电机驱动板模块供电,一个微型小船型开关32档红色,是个总电源开关,蓝色、绿色、黑色、黄色四个按钮模块,分别用来控制小车的前进、后退、加速和减速,若干钣金件和杜邦线搭建好一个小车。


硬件连接


L298N电机驱动板模块                    Arduino

            5V                   <------>         5V

           GND                 <------>        GND

            D5                   <------>        ENA

            D9                   <------>         IN1

            D3                   <------>         IN2

            D6                   <------>        ENB

            D10                  <------>        IN3

            D4                    <------>        IN4


L298N电机驱动板模块                      9V充电锂电池

           GND                   <------>           负极

            V12                   <------>           正极

两个电机一个接在L298N电机驱动板模块OUT1OUT2输出口,另一个接在OUT3OUT4输出口


蓝色按钮模块                          Arduino

       OUT             <------>          D7

       VCC              <------>         5V

       GND             <------>       GND


绿色按钮模块                         Arduino

       OUT              <------>         D8

       VCC               <------>         5V

       GND              <------>        GND


黑色按钮模块                           Arduino

       OUT              <------>         D12

       VCC              <------>          5V

       GND              <------>        GND


黄色按钮模块                          Arduino

       OUT               <------>        D13

       VCC                <------>         5V

       GND               <------>        GND

备注:四个按钮的VCC可以连接在一起后接入Arduino 5V,GND可以连接在一起后接入ArduinoGND,电池扣、船型开关和9V充电锂电池连接在一起,控制电源供电,微型小船型开关32档红色的中间脚和电池扣的红色线正极接在一起,”O”字样一端接在L298N电机驱动板模块的V12


黑色按钮加速控制


定义一个变量A,初始值设为0,每按一次黑色按钮变量A63



黄色按钮减速控制


每按一次黄色按钮变量减63,如果变量小于0A就重新赋值为0



蓝色按钮控制小车前进


当变量A0255之间时,A的值即速度,当变量A大于255时,A重新赋值为252,方便减速用,速度设为252



绿色按钮控制小车后退


当变量A0255之间时,把A的取负数并赋值给变量B,小车的速度即为B的值,取负数的目的是让小车后退,当变量A等于0时小车停止,当变量A大于255时,将A重新赋值为252,小车后退的速度设为-252



没有按钮按下时小车保持停止状态



有线遥控小车总程序



程序实现代码


volatile int A;

volatile int B;

 void setMotor(int speedpin,int dirpin, int speed)

   {

if (speed == 0)

{

digitalWrite(speedpin, LOW);

}

else if (speed > 0)

{

digitalWrite(dirpin, LOW);

analogWrite(speedpin, speed);

}

else

{

digitalWrite(dirpin, HIGH);

analogWrite(speedpin, speed);

}

}

void setup(){

  A = 0;

  B = 0;

  pinMode(12, INPUT);

  pinMode(13, INPUT);

  pinMode(7, INPUT);

  pinMode(5, OUTPUT);

  pinMode(6, OUTPUT);

  pinMode(9, OUTPUT);

  pinMode(3, OUTPUT);

  digitalWrite(9, LOW);

  digitalWrite(3, LOW);

  pinMode(10, OUTPUT);

  pinMode(4, OUTPUT);

  digitalWrite(10, LOW);

  digitalWrite(4, LOW);

  pinMode(8, INPUT);

}

void loop(){

  if (digitalRead(12) == HIGH) {

    delay(1000);

    A = A + 63;

  } else if (digitalRead(13) == HIGH) {

    delay(1000);

    A = A - 63;

    if (A < 0) {

      A = 0;

    }

  } else if (digitalRead(7) == HIGH) {

    delay(200);

    if (A > 0 && A < 255) {

      digitalWrite(5,HIGH);

      digitalWrite(6,HIGH);

      setMotor(9, 3,A);

      setMotor(10, 4,A);

    } else if (A > 255) {

      A = 252;

      digitalWrite(5,HIGH);

      digitalWrite(6,HIGH);

      setMotor(9, 3,252);

      setMotor(10, 4,252);

    }

  } else if (digitalRead(8) == HIGH) {

    delay(200);

    if (A > 0 && A < 255) {

      B = A * -1;

      digitalWrite(5,HIGH);

      digitalWrite(6,HIGH);

      setMotor(9, 3,B);

      setMotor(10, 4,B);

    } else if (A == 0) {

      setMotor(9, 3,0);

      setMotor(10, 4,0);

    } else if (A > 255) {

      A = 252;

      digitalWrite(5,HIGH);

      digitalWrite(6,HIGH);

      setMotor(9, 3,-252);

      setMotor(10, 4,-252);

    }

  } else {

    digitalWrite(5,LOW);

    digitalWrite(6,LOW);

  }

}

路过
路过
雷人
雷人
握手
握手
鲜花
鲜花
鸡蛋
鸡蛋