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电机驱动扩展板)
实例3,stc8a利用内置的PWM模块,控制小车直流电机运动