码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-11-23 14:27:55      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:tput   amp   波特   解码   val   打印   span   output   enable   

  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红外控制小车程序(俩引脚的直流电机)

标签:tput   amp   波特   解码   val   打印   span   output   enable   

原文地址:https://www.cnblogs.com/liuming-nimi/p/11917742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!