「Arduino でプラレールのストップレール制御」、なんとかメドが立ちました。
テスト用に、「リセットすると『赤=停止』になり、10秒たつと『青=進行』に変わる」というロジックを組んでみた。
// Servo_test // 2009.4.19. Toshi Nagata // Servo: digital-9 // LED1: common cathode (longest, pin 3), GND; blue (pin 2), D2 with 1k ohm // LED2: common cathode, GND; red (pin 4), D3 with 1k ohm #include <Servo.h> Servo myservo; void red() { digitalWrite(3, HIGH); digitalWrite(2, LOW); myservo.write(135); } void blue() { digitalWrite(3, LOW); digitalWrite(2, HIGH); myservo.write(30); } void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); myservo.attach(9); red(); delay(10000); blue(); } void loop() { }
ヒメが Arduino のリセットボタンを押したくてしょうがないみたいだったが、頼むからちょっと待ってくれ。今度やるときにはちゃんと触れるようにするから。
距離センサを使って電車が来たのを検出しようと思っていたのだが、よく使われているGP2Y0A21YKではどうもうまくいかない。このセンサは、もっと大きな物体(人間とか)が50〜60cm の距離に来たのを検出するためのもので、プラレールの電車みたいな小さいものを10cm以下の距離で検出するには向いてない。CdS センサをレールに貼付けて、室内光の遮断を検出するのがいいのかな。
あと、電源をなんとかしたい。一応単独で動作するロジックを組んでいるのに、電源供給だけのために USB でパソコンにつなぐという間抜けなことになっている。ACアダプタでもいいのだが、やっぱり電池がいい。電源は 6V あればいいのだが、充電池を使うことを想定すると、5本以上直列にすることになる。かさばるなあ。なんとかならんもんかな。