arduino红外控制小车程序(俩引脚的直流电机)

Posted liuming-nimi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arduino红外控制小车程序(俩引脚的直流电机)相关的知识,希望对你有一定的参考价值。

  1 #include <IRremote.h>
  2 
  3 IRrecv irrecv(2);//将引脚2定义为接受红外信号引脚
  4 decode_results results;//存放解码器的值
  5 
  6 long F=16718055;//前的码值
  7 long B=16730805;//后的码值
  8 long L=16716015;//左的码值
  9 long R=16734885;//右的码值
 10 long S=16726215;//停的码值 OK
 11 
 12 const int FL1=3;//定义前左轮+的引脚3
 13 const int FL0=4;//定义前左轮-的引脚4
 14 const int FR1=5;//定义前右轮+的引脚5
 15 const int FR0=6;//定义前右轮-的引脚6
 16 const int BL1=7;//定义后左轮+的引脚7
 17 const int BL0=8;//定义后左轮-的引脚8
 18 const int BR1=9;//定义后友轮+的引脚9
 19 const int BR0=10;//定义后友轮-的引脚10
 20 
 21 void setup() {
 22   pinMode(2,INPUT);//定义引脚2为输入
 23   Serial.begin(9600);//定义串口波特率为9600
 24   irrecv.enableIRIn();//初始化,启用红外接收 
 25 
 26   pinMode(FL1,OUTPUT);//定义输出
 27   pinMode(FL0,OUTPUT);
 28   pinMode(FR1,OUTPUT);
 29   pinMode(FR0,OUTPUT);
 30   pinMode(BL1,OUTPUT);
 31   pinMode(BL0,OUTPUT);
 32   pinMode(BR1,OUTPUT);
 33   pinMode(BR0,OUTPUT);
 34 }
 35 void loop() {
 36   if(irrecv.decode(&results))//判断接受并解码是否成功
 37   {
 38       Serial.println(results.value);//这里串口打印解码后的值没有转化为16进制
 39       if(results.value==F){forword();}//判断相应的值,调取相应的函数
 40       else if(results.value==B){back();}
 41       else if(results.value==L){left();}
 42       else if(results.value==R){right();}
 43       else if(results.value==S){stops();}
 44       irrecv.resume();//重置红外接受
 45   }
 46   delay(500);//延时,消除按键抖动所导致的乱码情况
 47 }
 48 
 49 //前进函数
 50 void forword()
 51 {
 52   digitalWrite(FL1,HIGH);
 53   digitalWrite(FL0,LOW);
 54   digitalWrite(FR1,HIGH);
 55   digitalWrite(FR0,LOW);
 56   digitalWrite(BL1,HIGH);
 57   digitalWrite(BL0,LOW);
 58   digitalWrite(BR1,HIGH);
 59   digitalWrite(BR0,LOW);
 60   }
 61   //后退函数
 62 void back()
 63 {
 64   digitalWrite(FL1,LOW);
 65   digitalWrite(FL0,HIGH);
 66   digitalWrite(FR1,LOW);
 67   digitalWrite(FR0,HIGH);
 68   digitalWrite(BL1,LOW);
 69   digitalWrite(BL0,HIGH);
 70   digitalWrite(BR1,LOW);
 71   digitalWrite(BR0,HIGH);
 72   }
 73   //左转函数
 74   void left()
 75 {
 76   digitalWrite(FL1,LOW);
 77   digitalWrite(FL0,LOW);
 78   digitalWrite(FR1,HIGH);
 79   digitalWrite(FR0,LOW);
 80   digitalWrite(BL1,LOW);
 81   digitalWrite(BL0,LOW);
 82   digitalWrite(BR1,HIGH);
 83   digitalWrite(BR0,LOW);
 84   }
 85     //右转函数
 86   void right()
 87 {
 88   digitalWrite(FL1,HIGH);
 89   digitalWrite(FL0,LOW);
 90   digitalWrite(FR1,LOW);
 91   digitalWrite(FR0,LOW);
 92   digitalWrite(BL1,HIGH);
 93   digitalWrite(BL0,LOW);
 94   digitalWrite(BR1,LOW);
 95   digitalWrite(BR0,LOW);
 96   }
 97   //停止函数
 98 void stops()
 99 {
100   digitalWrite(FL1,LOW);
101   digitalWrite(FL0,LOW);
102   digitalWrite(FR1,LOW);
103   digitalWrite(FR0,LOW);
104   digitalWrite(BL1,LOW);
105   digitalWrite(BL0,LOW);
106   digitalWrite(BR1,LOW);
107   digitalWrite(BR0,LOW);
108   }

代码如上

以上是关于arduino红外控制小车程序(俩引脚的直流电机)的主要内容,如果未能解决你的问题,请参考以下文章

超声波+红外线避障小车(Arduino + L298P电机驱动扩展板)

Arduino可以把A0和数字信号引脚相连吗

实例3,stc8a利用内置的PWM模块,控制小车直流电机运动

哪位大神能帮我写一个arduino 控制两个直流电机正反转,加减速和拐弯的程序啊?arduino程序,非常感谢。

arduino+nrf24l01摇杆控制小车程序

Arduino1.2--数字I/O引脚的操作函数