SSブログ

Arduinoでリモコンを試してみた [Arduinoで自動運転(DCC)]

こんにちは。都内は爽やかな五月晴れの青空で気持ちいいです。

事務処理も少し落ち着いたので、arduinoを使っての自動運転の企みを再開です。

今回はコレを使ってみます。

P1110251.JPG

赤外線受光素子 (VS1838B)と赤外線リモコンです。

どちらもarduinoのキットに付属のモノですが、どうやら、環境をちょっとイジらないとコンパイルエラーになりました。

まずは、下記のサイトからArduino-IRremote を DL します (右下に [Download ZIP] ボタンがあります)。

https://github.com/z3t0/Arduino-IRremote

次に、Arduino IDE のインストールフォルダにある libraries フォルダから RobotIRremote フォルダを削除します。
その後で、Arduino IDE メニューの [スケッチ | ライブラリを使用 | Add Library...] にて DL した ZIP を指定。
念のために Arduino IDE を再起動。
(ライブラリは "C:\Users\<ユーザ名>\Documents\Arduino\libraries" に格納されます)

とのことで、なんとかうまくできました。
で、これが赤外線受光素子 (VS1838B)です。

P1110248.JPG

線路に車輌を載せて試運転をしてみました。

P1110250.JPG

で、動画です。



リモコンを押すと赤色LEDを点灯させて10秒ほど走ります。
で、再度リモコンを押すと赤色LEDを点灯させて逆向きに10秒ほど走るようにしてみました。

これで、リモコンを押すことで自動運転をスタートさせることができそうです。

一応プログラムです。

#include <IRremote.h>

void analogWrite3(int op1)
{
TCCR2A=0b00100011;
TCCR2B=0b00001010;
OCR2A=150;
OCR2B=op1;
}
void analogWrite10(int op2)
{
TCCR1A=0b00100011;
TCCR1B=0b00011010;
OCR1A=150;
OCR1B=op2;
}

int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(13, OUTPUT);

pinMode(3,OUTPUT);
// pinMode(4,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}

int fw=1;
void loop() {

// decode_results results;

if (irrecv.decode(&results)) {
Serial.println("Step000");
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value

if((results.value == 0xFF30CF) ||
(results.value == 0x9716BE3F)){ // リモコンが1か?
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

digitalWrite(3,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

delay(500);
if (fw==1){
Serial.println("Step001");
digitalWrite(11,HIGH);
}
else {
Serial.println("Step002");
digitalWrite(12,HIGH);
}
for (int i=1 ;i<10 ;i++ ){
if (fw==1){
Serial.println("Step003");
analogWrite3(i);
digitalWrite(10,LOW);
}
else {analogWrite10(i);
Serial.println("Step004");
digitalWrite(3,LOW);
}
delay(100);
}
delay(10000);
for (int i=10;i>1;i--){
if (fw==1){
Serial.println("Step005");
analogWrite3(i);
digitalWrite(10,LOW);
}
else {
Serial.println("Step006");
analogWrite10(i);
digitalWrite(3,LOW);
}
delay(100);
}
Serial.println("Step007");
delay(3000);
digitalWrite(3,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
fw=fw*-1;
}
}
}

なんかブラウザだと段ずらしのスペース消えてるなぁ。

nice!(1)  コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 1

コメント 2

親爺ぃ

初めまして、親爺ぃと申します。
http://www.akiyan.com/htmlspecialchars
ここのサイトにスケッチをコピペして変換させてからブログ編集画面に貼り付けると段ずらしはくずれませんよ。

by 親爺ぃ (2016-05-20 08:06) 

目黒のダンボ

親爺ぃさん、初めまして。

コメントの返信が大変遅くなってしまい、申し訳ありません。

http://www.akiyan.com/htmlspecialchars
>ここのサイトにスケッチをコピペして変換させてからブログ編集画面に貼り付けると段ずらしはくずれませんよ。
何度かやってみたのですが、左詰めになってしまいました。
せっかくの情報、うまく活用できなくて申し訳ありません。
by 目黒のダンボ (2016-05-28 12:33) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0