それいけ!フロイデ電子工作部

リモコンで光らせる

2016.10.26

こんにちは、そろそろ夏服をしまわないといけないと思ってるはんだくんです。
前回はWROOM-2と言うなの、
小さなコンピュータにプログラムを書いてLEDを点けるというとこで終わりました。
前に書きましたが、これだと懐中電灯を買ってきた方が早いです…。
なので、今回は少し手を加えてみます。

回路を組んでみる

はんだくんと呼ばれていますが、お試し回路を作るたびに

半田ごてを握るのはめんどくさいです。

なので左下のブレッドボードという物で、サックと回路を作ります。

上のパーツ類は、左から順に赤外線受信モジュール, 抵抗, LED(青と赤)

赤外線モジュールには極性があります。

こちらは購入時についてくるパーツの説明書で確認してください。

LEDも極性があり、長い足の方がアノード(+), 短い足の方がカソード(ー)です。

サクッと作るこんな感じです。

黄色の線は赤外線モジュールから16PINへ

赤色の線は赤色LEDへ抵抗を介して4PINへ

青色の線は青色LEDへ抵抗を介して5PINへ繋げています。

LEDは低消費電で光るので、直接つなげると壊れてしまいます。必ず抵抗を介して繋げましょう。

因みに今回は470Ωの抵抗を使っています。

 

前回のプログラムに付け加える


#include <ESP8266WiFi.h>
void setup() {
  
  // 使うPINのモード設定
  // 出力モードに設定
  pinMode(4, OUTPUT); // 赤いLED
  pinMode(5, OUTPUT); // 青いLED

  // 入力モードに設定
  pinMode(16, INPUT); // 赤外線受信モジュール
}

void loop() {

  // 指定したPINからデジタル信号を受け取る
  // デジタル信号は 『 1 』か『 0 』が来る
  // 『 0 』は赤外線を受信したときの値
  if(digitalRead(16) == 0){
    digitalWrite(4, LOW);  // 赤色OFF
    digitalWrite(5, HIGH); // 青色ON
  }else{
    digitalWrite(4, HIGH); // 赤色ON
    digitalWrite(5, LOW);  // 青色OFF
  }
  delay(500); //0.5秒処理を待つ
}


前回から比べると、いろいろ追加しました。

今回はリモコンの信号を受信するという動作がありますので、16のPINを入力モードに設定しています。

if(digitalRead(16) == 0){

 受信したときの処理

}else{

 受信しなかったときの処理

}

digitalRead(16)

16は黄色の線でつないだ赤外線モジュールの信号がやってきます。

つまり、INPUTで設定したPINからの信号をこのように書くと受信出来るということになります。

delay(500);

この命令は、500ms処理を待てという命令です。その名の通り処理がその時間止まります。

500msは0.5秒ですので、1000msは1秒になります。

この命令文がないと、ノイズを拾ってしまい赤青、点滅すると思います。

目標達成!

サックと作ってサックと出来ました。

通常は見にくいですが、赤色のLEDが点灯してリモコンの信号を受信すると青色のLEDが点灯します。

もし、受信できないなと思ったときは、最後に記述した。

delay(500);

この500を400,300,200としてみてください。

恐らくこれで受信できると思います。

本来なら、信号の意味を解析するプログラムが必要ですが

サックと作ったのでその部分を省いてるのでこんな制御になっています。

次回は、Wi-Fiと繋げてみたいと思います。