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   }

代码如上


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM