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 }
代碼如上