赤外線受信機を作る②

Arduino

「赤外線受信機を作る①」ではArduino UNOを使いました。UNOは最もポピュラーですが、リモコン戦車に載せるにはちょっと大きいです。そこで小さ目のArduinoを使ってみたいと思います。

Arduino Pro Mini 328 5V 16MHz(sprarkfun)
Arduino Uno&Pro Mini

Arduino Pro Miniです。UNOと比べても1/4くらいの大きさです。小さい分、拡張性は犠牲になっていますし、スケッチを書き込むためのUSBシリアル回路も省略されています。そんなんで使うときにUNOより多少手間がかかりますが、慣れれば大丈夫です。

Arduinoはオープンハードウェアです。基板データが公開されているため誰でも互換機を作ることができます。そのため、Arduino互換機が販売されています。互換機の魅力は何といっても価格の安さです。1個5~600円で買うことができます。

■純正品

Arduino Pro Mini 328 5V 16MHz — スイッチサイエンス↗

■互換機

waves Arduino Pro Mini 互換ボード 328 5V 16MHz 2個セット

前述でスケッチを書き込むのためのUSBシリアル回路が省略されていると書きました。それではスケッチの書き込みはどのようにおこなうのでしょうか?

ここでは「USBシリアル変換モジュール」を使います。

FT232RL USBシリアル変換モジュール

FT232RL USBシリアル変換モジュール: 半導体 秋月電子通商-電子部品・ネット通販↗

Arduino Pro Mini – シリアル変換

今回は、Arduino Pro Miniを使ってLEDの点灯を制御していこうと思います。

結線図

Arduinoとの結線図を示します。

/*
  SparkFun Electronics 2013
  Playing with Infrared Remote Control
  
  IR Receiver Breakout (SEN-8554): Supply voltage of 2.5V to 5.5V
    Attach
    OUT: To pin 11 on Arduino
    GND: GND
    VCC: 5V
  
  This is based on Ken Shirriff's code found on GitHub:
  https://github.com/shirriff/Arduino-IRremote/

  This code works with cheap remotes. If you want to look at the individual timing
  of the bits, use this code:
  http://www.arduino.cc/playground/Code/InfraredReceivers
*/
/*******************************************************************************
赤外線リモコン(SparkFun COM-11759)受信

++++++ note ++++++
・赤外線リモコン(SparkFun CM-11759)で3個のLEDの点灯・消灯を制御

*******************************************************************************/

#include <IRremote.h>           // 赤外線送受信用ヘッダファイル

int RECV_PIN = 11;              // 赤外線受信モジュール
IRrecv irrecv(RECV_PIN);       // 赤外線受信用オブジェクトの設定
decode_results results;       // 赤外線受信結果を格納する
#define POWER 0x10EFD827 
#define A 0x10EFF807 
#define B 0x10EF7887
#define C 0x10EF58A7
#define UP 0x10EFA05F
#define DOWN 0x10EF00FF
#define LEFT 0x10EF10EF
#define RIGHT 0x10EF807F
#define SELECT 0x10EF20DF

// set pin numbers:
const int RED = 8;              // LED(赤)はデジタルピン8に接続
const int YEL = 9;              // LED(黄)はデジタルピン9に接続
const int GRE = 10;             // LED(緑)はデジタルピン10に接続

// 初期化(電源投入/リセット時1回のみ実行):
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver

// initialize the LED pin as an output(ArduinoにLEDが出力であることを伝える):
  pinMode(RED, OUTPUT);
  pinMode(YEL, OUTPUT);
  pinMode(GRE, OUTPUT);
}

// main loop:
void loop() 
{
  if (irrecv.decode(&results))  //(★これが無いと動作しない)
  {
    switch(results.value)
    {
      case UP:                  //UPなら赤のみ点灯
        digitalWrite(RED, HIGH);
        digitalWrite(YEL, LOW);
        digitalWrite(GRE, LOW);
        break;
      case RIGHT:               //RIGHTなら黄のみ点灯
        digitalWrite(RED, LOW);
        digitalWrite(YEL, HIGH);
        digitalWrite(GRE, LOW);
        break;
      case LEFT:                //LEFTなら緑のみ点灯
        digitalWrite(RED, LOW);
        digitalWrite(YEL, LOW);
        digitalWrite(GRE, HIGH);
        break;
      case DOWN:                //DOWNなら全点灯
        digitalWrite(RED, HIGH);
        digitalWrite(YEL, HIGH);
        digitalWrite(GRE, HIGH);
        break;
      case SELECT:              //SELECTなら全消灯
        digitalWrite(RED, LOW);
        digitalWrite(YEL, LOW);
        digitalWrite(GRE, LOW);
        break;
      default:
        break;
    }
      irrecv.resume();          // 受信機をリセットする(★これが無いと1回のみの制御となる)
  }
}

Arduinoのスケッチです。

デモ動画です。ボタンを押下するごとにLEDが点灯消灯します。

コメント

タイトルとURLをコピーしました