紅外線接收器 改善接收器穩定度:
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
  }
}