Programming Language

[Arduino/C/C#] 아두이노로 리모컨 만들기 - 전원버튼 , 볼륨 조절

nabee 2022. 2. 18. 02:25

-주요동작기능

  • 전원 on/off
  • 볼륨 +/-

-하드웨어 설계

-동작코드

unsigned char OFF_PWM, ON_PWM;

const unsigned char custom = 0x07;
const unsigned char chup = 0x12;
const unsigned char chdown = 0x10;
const unsigned char power = 0x02;
void setup() {
  // put your setup code here, to run once:
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);

pinMode(11, OUTPUT);
OFF_PWM = TCCR2A;
ON_PWM = _BV(COM2A0) | _BV(WGM21);
TCCR2A = _BV(COM2A0) | _BV(WGM21);
TCCR2B = _BV(CS20);
OCR2A = 209;
TCCR2A = OFF_PWM;
}
void loop() {
  if ( digitalRead(2) )     TxPacket(power);
  else if ( digitalRead(3) )  TxPacket(chup);
  else if ( digitalRead(4) )  TxPacket(chdown);
  
}

void TxPacket (unsigned char data) {
  // Tx Head 
  IRLED_ON(4500);   // 
  delayMicroseconds(4500);
  
  Tx_8bit (custom);
  Tx_8bit (custom); // ~custom if LG
  Tx_8bit (data);
  Tx_8bit (~data);
  //Tx end bit
  IRLED_ON(560);
  //wait 48ms
  delay(45); //if lg 41

}
void Tx_8bit(unsigned char code){
int i;
  for (i = 0; i < 8; i++) 
  {
    if (code & 0x01) 
    { // Tx bit “1”
      IRLED_ON(560);
      delayMicroseconds(1690);
    } 
    else {
      IRLED_ON(560);
      delayMicroseconds(565);// Tx bit “0”
    }
    code = code >> 1;
  }
}
void IRLED_ON(unsigned int timeus){
  TCCR2A = ON_PWM;
  delayMicroseconds(timeus);
  TCCR2A = OFF_PWM;
  }

-실행파일

프로그램 sketch_oct03a.ino
0.00MB