ラジコンに取り付ける事が出来るパトカー等の回転灯のパーツがある。GOOLRC AX-511Rと言う製品で、赤や橙、青色やその他の形状のバリエーションがある。
GoolRC AX-511Y RC 多機能 円形 超高輝度 パトカー LED ライト 警告灯 ストロボ ブラスト 点滅 高速 低速 回転モード付き
とりあえず中央の電源と黒のGND線に5V程度給電すれば、回転灯が点く。ちょっとした電子工作にも使えそうだ。
3本目が信号線で、幾つかの点灯パターンを切り替える事が出来る。
Arduinoから切り替えられないかと情報を探してみたが、信号線の扱いについての情報が全く出てこない。とりあえず製品説明にはch3に接続しろ、とだけ書かれている。
信号線をGNDに落としてみたり、5Vに上げてみたり、色々試してみたが何かのはずみでパターンが変わるものの、なにがきっかけでパターンが変わっているのか良く分からない。
しばらく悩んだ末、ch3と言うのはどうやらラジコンの受信器のch3に接続するらしい事が分かった(当初ラジコン用パーツと分かっていなかった)。ラジコンの信号の情報を探してみると、20msサイクルの信号で、先頭1~2msのHIGH信号幅でPWM信号を送信しているらしい。
https://www.superdroidrobots.com/shop/custom.aspx/remote-control-rc-support/40/
そこで、疑似的にパルス信号を作り出し、信号を低(1ms)~高(1.8ms)~低(1ms)と変化させてみた所、上手く回転灯の点灯パターンが切り替わった。
以下、5秒毎にパターンを切り替える簡単なスケッチ例。
#define SIG_PIN A0
void sendsignal(int dur){
for (int i = 0; i < 9; i++) {
digitalWrite(SIG_PIN, HIGH);
delayMicroseconds(dur);
digitalWrite(SIG_PIN, LOW);
delayMicroseconds(20000-dur);
}
}
void sendswitch(){
sendsignal(1000);
sendsignal(1800);
sendsignal(1000);
}
void setup() {
// put your setup code here, to run once:
pinMode(SIG_PIN, OUTPUT);
}
void loop() {
sendswitch();
delay(5000);
}
回転灯の点灯と切り替えの様子。