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


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シリアル変換モジュール: 半導体 秋月電子通商-電子部品・ネット通販↗

今回は、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が点灯消灯します。



コメント