ArduinoでSTEM教育​ 基礎編:赤外線コントロール

ArduinoでSTEM教育​ 基礎編:赤外線コントロール

今回は、Arduinoで赤外線受信モジュールとコントローラを使用して、3つのLEDのON/OFF制御をする方法を紹介します。LCDの使用方法については、以前の記事(ArduinoでSTEM教育​-基礎編:LCD)を参照してください。

目次

使用する部品一覧

使用する部品は図のとおりです。これらの部品は、すべて「ELEGOO Arduino用のMega2560スタータキット」に含まれています。

  • Arduino MEGA2560 R3 …1個​
  • 830穴 ブレッドボード …1個​
  • LCD1602モジュール …1個​
  • ポテンショメータ(10kΩ) …1個​
  • 赤外線受信モジュール …1個​
  • 赤外線コントローラ …1個​
  • LED …3個​
  • 抵抗(220Ω) …3個​
  • ジャンパワイヤ(オス-メス) …3個​
  • ジャンパワイヤ(オス-オス) …19個

赤外線受信モジュールの特徴や取り扱い方法

赤外線による制御は、テレビやエアコンのリモコンなどで使用されています。​赤外線は、可視光領域よりも波長が長い光のことを指し、裸眼で見ることができません。​今回使用するモジュールは、AX-1838HSという素子を使用しており、940nm/38kHzの赤外線を受信できます。​赤外線の波長と周波数は、コントローラ側と受信機側で揃えておく必要があります。

回路図

赤外線受信モジュールの電源(R)端子は5Vに接続、グランド(G)はGNDに接続、通信(Y)端子はD5端子に接続します。​各LEDと電流制限抵抗(220Ω)は直列に接続します。LEDのアノード(LED端子の長い方)は、赤LEDはD2、緑LEDはD3,青LEDはD4に接続します。​電流制限抵抗の片方は、GNDに接続します。

配線図

ブレッドボードを使用した配線は図のとおりになります。

組立完成写真

実際に組み立てた写真です。同じようにできましたか?​

プログラム​​

最初に、赤外線受信モジュール用のライブラリ(IRremote.h)を#includeで読み込みます。​そして、IRrecvクラスを使用するために、irrecv(RECEIVER_PIN)でインスタンスを生成します。​また、受信信号をデコードした結果を格納するために、decode_resultsのインスタンスも生成します。​setup()内では、赤外線受信を開始するために、irrecv.enableIRIn()を記述します。

赤外線コントローラの何のボタンが押されたか分かりやすいように、decodeIR()関数を作成します。​この関数では、0~3が押された場合、その番号が返り値となるようにします。​赤外線を受信した場合、if文内のコードが実行されます。​if文内では、押されたボタンの値をvalueに代入し、それをLCDに表示させます。

次に、value(赤外線リモコンで押したボタン)に応じて、LEDのON/OFFの場合分けをするため、​switch文とcase文を使用します。break記述を省略した場合、以降のコードも実行されてしまうので、注意してください。​メインループの最後は、赤外線受信機をリセットして、次の受信に備えるために、irrecv.resume()を記述します。

動かしてみよう

プログラムを書き込んで、実際に動かしてみてください。

今回学んだポイント

  1. 赤外線センサは、ある特定の波長・周波数の赤外線(今回使用した製品は、940nm/38kHz)を利用して、送信機と受信機間で信号の受け渡しをする。​
  2. ​switchとcaseを使用することで、可読性の良いコードを書くことができる。​
  3. ​case文内は複数行書くことができるが、最後はbreakで抜ける必要がある。

改造してみよう

もう少し理解を深めるために、自分で改造してみてください。​

  1. 0,1,2,3以外のボタンを押した場合のLED制御を書いてみよう。 ​
  2. ​LEDの輝度をコントローラで制御できるようにしてみよう。

Arduino基礎編カテゴリの最新記事