ブログだいちゃん

ブログだいちゃん

趣味のブログ

ブログだいちゃん

赤外線リモコンでロボカーを動かすその2

f:id:blogdaichan:20190103183656j:plain

前の記事で赤外線リモコンの信号コードをArduino NANO で取得しました、そのコードを使ってどのボタンが押されているのかLCDディスプレイに表示させます。

準備と配線

パーツは、LCDディスプレイ、赤外線受信モジュール・リモコン、ブレッドボード、配線用ワイヤーです。

LCDディスプレイは以前の記事で使用したものを使いますArduinoとの接続も同様です、赤外線モジュールの信号ピンはArduino のD2に接続します。

初めてFritzingを使って回路図を作成してみました、LCDや赤外線受信モジュールなどは実際のものとは違いますが参考程度に見て下さい、右側が実際にブレッドボードを使用して配線した画像です。

f:id:blogdaichan:20190103183649j:plainf:id:blogdaichan:20190103183652j:plain

スケッチの書き込みと実行

配線チェックを確認してスケッチを書き込みます。

/*
* 超小型LCDキャラクタディスプレイモジュール(16×2行 白抜き)
*LCDとArduino との端子接続 
*Arduino[11] <-> LCD[14]
*Arduino[10] <-> LCD[13]
*Arduino[09] <-> LCD[12]
*Arduino[08] <-> LCD[11]
*
*Arduino[07] <-> LCD[06]
*Arduino[06] <-> LCD[05]
*Arduino[05] <-> LCD[04]
*
*半固定抵抗10kΩ <-> LCD[03](コントラスト調整用)
*Arduino[5V] <-> LCD[02]
*Arduino[GND] <-> LCD[01]
*
*Arduino[D2] <->IR[S]
*
 */

#include <LiquidCrystal.h> //LCDライブラリー
#include <IRremote.h> //IRライブラリー

LiquidCrystal lcd(5,6,7,8,9,10,11); //Arduinoピン配置
const int RECV_PIN = 2; //IRの信号を2Dに接続
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long key_value = 0;

void setup() {
  lcd.begin(16,2); //216文字表示
  Serial.begin(9600);
  irrecv.enableIRIn(); 
  irrecv.blink13(true);
 }

void loop(){
if (irrecv.decode(&results)){
 
        if (results.value == 0XFFFFFFFF)
        results.value = key_value;
        lcd.clear();
        lcd.setCursor(1,0);
        lcd.print("Display Button");
        lcd.setCursor(5,1);
                
        switch(results.value){
          case 0xFFA25D:          
          lcd.print("1");
          break;
          case 0xFF629D:
          lcd.print("2");
          break;
          case 0xFFE21D:
          lcd.print("3");
          break;
          case 0xFF22DD:
          lcd.print("4");
          break;
          case 0xFF02FD:
          lcd.print("5");
          break ;  
          case 0xFFC23D:
          lcd.print("6");
          break ;               
          case 0xFFE01F:
          lcd.print("7");
          break ;  
          case 0xFFA857:
          lcd.print("8");
          break ;  
          case 0xFF906F:
          lcd.print("9");
          break ;  
          case 0xFF6897:
          lcd.print("*");
          break ;  
          case 0xFF9867:
          lcd.print("0");
          break ;
          case 0xFFB04F:
          lcd.print("#");
          break ;
          case 0xFF38C7:
          lcd.print("OK");
          break ;
          case 0xFF18E7:
          lcd.print("Up");
          break ;
          case 0xFF5AA5:
          lcd.print("Right");
          break ;
          case 0xFF4AB5:
          lcd.print("Down");
          break ;
          case 0xFF10EF:
          lcd.print("Left");
          break ;
                     
        }
        key_value = results.value;
        irrecv.resume(); 
  }
}

「case」に前の記事で取得しておいたリモコンのコード、「lcd.print」に対応するボタン名が入っています、コードの頭の0xは16進数の指定です。

実際に動作させた動画です

リモコンのボタンに対応するコードも間違いがなかったので、ロボカーのパーツが揃ったらリモコンも使えるロボカーの作成に掛ります。