| 紅外線接收器 改善接收器穩定度: Vcc與GND間 接一個22uF電容 輸出接腳 接20k歐姆提升電阻 |
| #include <IRLibAll.h> #define DirR 12 #define DirL 11 //#define PwmL 6 //#define PwmR 5 #define PwmL 9 #define PwmR 10 IRrecvPCI myReceiver(2); IRdecode myDecoder; uint32_t val; void cm(int dL,int dR,int sL,int sR){ analogWrite(PwmL,0); analogWrite(PwmR,0); delay(200);//防止突然反向 digitalWrite(DirL,dL); digitalWrite(DirR,dR); analogWrite(PwmL,sL); analogWrite(PwmR,sR); } void setup() { pinMode( DirL , OUTPUT); pinMode( DirR , OUTPUT); // pinMode(9,INPUT_PULLUP); // pinMode(10,INPUT_PULLUP); cm(HIGH,HIGH,0,0); myReceiver.enableIRIn(); } void loop() {if (myReceiver.getResults()) { myDecoder.decode(); //Decode it val=myDecoder.value; if (val==0xFFA25D) cm(1,1,250,250);//key :CH- if (val==0xFF629D) cm(1,1,0,0);//key: CH myReceiver.enableIRIn(); //Restart receiver } } |
| //I2C LCD+遙控 #include <IRLibAll.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); #define DirR 12 #define DirL 11 //#define PwmL 6 //#define PwmR 5 #define PwmL 9 #define PwmR 10 IRrecvPCI myReceiver(2); IRdecode myDecoder; uint32_t val; void cm(int dL,int dR,int sL,int sR){ analogWrite(PwmL,0); analogWrite(PwmR,0); delay(200); digitalWrite(DirL,dL); digitalWrite(DirR,dR); analogWrite(PwmL,sL); analogWrite(PwmR,sR); } void setup() { pinMode( DirL , OUTPUT); pinMode( DirR , OUTPUT); // pinMode(9,INPUT_PULLUP); // pinMode(10,INPUT_PULLUP); cm(HIGH,HIGH,0,0); myReceiver.enableIRIn(); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.setCursor(0, 0); lcd.print("Ready to receive"); } void loop() {if (myReceiver.getResults()) { myDecoder.decode(); //Decode it val=myDecoder.value; if(val==0xFFFFFFFF) {lcd.setCursor(0, 1); lcd.print("Reapeat"); } else if(val==0) {lcd.clear(); lcd.setCursor(0, 0); lcd.print("unknown protocol"); } else {if (val==0xFFA25D) cm(1,1,250,250);//key :CH- if (val==0xFF629D) cm(1,1,0,0);//key: CH lcd.clear(); lcd.setCursor(0, 0); lcd.print("Code:"); lcd.setCursor(5, 0); lcd.print(val,HEX); } myReceiver.enableIRIn(); //Restart receiver } } |