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