« Arduinoで作ろう(23) 複合気象センサ BME280で気温・湿度・気圧を測定 | トップページ | Arduinoで作ろう(25) 気温・湿度・気圧のデータロガー »

2019年8月22日 (木)

Arduinoで作ろう(24) 赤外線リモコンの信号解読

Ir-reciever_2

 Arduinoの中華製シールドを収集するのが趣味なのですが,少し前に買った KEYESTUDIO多機能シールドVer.1 を使って,TVリモコンの赤外線信号解読をやってみました。

800pxks0183_pinout

 いろいろなパーツが載ってますが,赤外線レシーバ(たぶんVS1838)とブザーを使います。

 I2CのLCDを接続できるピンも出てるので,コレをつないでみました。(リンク先の説明には,I2Cアドレスは0x27と書いてありますが,実際には0x3Fでした) このLCD用のライブラリはココでダウンロードできます。

/*
 * SHARPリモコンの信号を赤外線レシーバで受信
 */

#include <IRremote.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2Cアドレス 0x3F, 16x2
int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
//Serial.begin(9600);
lcd.init();
lcd.backlight();
irrecv.enableIRIn();
pinMode(5,OUTPUT);
}

void loop() {
 if (irrecv.decode(&results)) {
  lcd.setCursor(0, 0);
  lcd.print("HEX:");
  lcd.print(results.value, HEX);lcd.print(" ");
  lcd.setCursor(0, 1);
    switch (results.value) {
    case 0x5324450A:lcd.print("button: 1");break;
    case 0xE072CF12:lcd.print("button: 2");break;
    case 0xCB96DB61:lcd.print("button: 3");break; 
    case 0x2F834551:lcd.print("button: 4");break;
    case 0x81041FF3:lcd.print("button: 5");break;
    case 0x9B14063:lcd.print("button: 6");break;
    case 0x1E5F84CF:lcd.print("button: 7");break;
    case 0xAB5F67EF:lcd.print("button: 8");break;
    case 0xF9792C4D:lcd.print("button: 9");break;
    case 0x82264CBD:lcd.print("button:10");break;
    case 0x2A0F2522:lcd.print("button:11");break;
    case 0x7E31B95A:lcd.print("button:12");break;
    default:lcd.print("button: ?");break; //1から12以外のボタンが押されたとき
    }
     for(int i=31;i>=0;i--){
     digitalWrite(5,bitRead(results.value,i));
     //Serial.print(bitRead(results.value,i));
     }
   //Serial.println("");
   irrecv.resume(); // Receive the next value
  }
 delay(200);
}

スケッチはこちら→ 20190821_irremote.ino

 SHARPのTVリモコンをIRレシーバに向けて操作すると,受信した信号を16進数で表示し,さらにswitch~caseで分けて,押されたボタンをLCDに表示するようにしてあります。他メーカーのリモコンなら,switch~caseの部分を書き換えればOKです。
 あと,bitRead(results.value,i)で32桁のバイナリデータを取り出して,これでブザーを鳴らしています。押したボタンによって音が異なります。

|

« Arduinoで作ろう(23) 複合気象センサ BME280で気温・湿度・気圧を測定 | トップページ | Arduinoで作ろう(25) 気温・湿度・気圧のデータロガー »

Arduino」カテゴリの記事