参考にしたのは、こちらのサイト。
本来RCカーですから、ラジコン信号の送受信により動作を制御するものですが、Arduinoを接続してラジコン信号をシミュレートし、受信用のIC=RX-2Bを直接制御します。
早速ですが、Arduino用のスケッチは次の通りです。
Here is the Arduino Sketch I used in this demo.
void setup()
{
pinMode(11, OUTPUT); //ピン11をアウトプット用に設定
}
void loop()
{
unsigned long startms; //動作開始時間取得用の変数
startms = millis();
while(millis() - startms < 2000) { //2秒間同じ動作を続けます
FWD();
}
delay(1000); //動作の間のインターバル=1秒
startms = millis();
while(millis() - startms < 2000) {
BAK();
}
delay(1000);
startms = millis();
while(millis() - startms < 2000) {
LEFTFWD();
}
delay(1000);
startms = millis();
while(millis() - startms < 2000) {
RIGHTFWD();
}
delay(1000);
startms = millis();
while(millis() - startms < 2000) {
LEFTBAK();
}
delay(1000);
startms = millis();
while(millis() - startms < 2000) {
RIGHTBAK();
}
delay(1000);
startms = millis();
while(millis() - startms < 2000) {
LEFTSPIN();
}
delay(1000);
startms = millis();
while(millis() - startms < 2000) {
RIGHTSPIN();
}
delay(1000);
}
void command(int mode) {
for(int i=0; i<=3; i++) // This starts the communication 4 W2 pulses 500Hz 75% duty cycle
{ //W2は初期化信号
digitalWrite(11, HIGH);
delayMicroseconds(1500);
digitalWrite(11, LOW);
delayMicroseconds(500);
}
for(int i=0; i<mode; i++) // This makes the car move, "mode" times of W1 pulses 1kHz 50% duty cycle
{ //W1が動作信号本体です
digitalWrite(11, HIGH);
delayMicroseconds(500);
digitalWrite(11, LOW);
delayMicroseconds(500);
}
}
void FWD(){
command(28);
}
void BAK(){
command(46);
}
void LEFTFWD(){
command(58);
}
void RIGHTFWD(){
command(10);
}
void LEFTBAK(){
command(64);
}
void RIGHTBAK(){
command(40);
}
void LEFTSPIN(){
command(52);
}
void RIGHTSPIN(){
command(34);
}
command(int mode)の部分がキモなのですが、delayMicroseconds()を利用してパルス信号を再現している訳です。
このデモでは、使用しているRC玩具のコード体系に合わせて、次のコードを送っています。
前進: 28 後退: 46 左前進: 58 右前進: 10
左後退: 64 右後退: 40 左旋回: 52 右旋回: 34
スケッチでは、それぞれの動作を2秒継続し、間に1秒のインターバルを入れて、ループ再生しています。
実際のロボットカー製作時には、コマンド入力や状況検知により適切な動作を実行することになります。
使用したRC玩具はこちら。

不必要な操縦席部分を取り除くと、こうなります。

操縦席部分からは、電池ボックスを取りだしたのでした。


実験用ハードの構成は、次にような感じです。

回路図は、下記のイメージです。(RX-2Bのパーツイメージが見つからないので、IC部分は仮のものです)
分圧回路用の抵抗は、手持ちの2.2kΩを使用しました。

ブレッドボード部のクローズアップ。

RC玩具内の制御ボート。RX-2Bの#3ピンにArduino(#11ピン)からの出力をつなぎます。

ArduinoのGNDと基板上のGNDを接続しました。(上の画像では、基板の影に隠れています)
キャタピラを駆動する電源は、電池ボックスから取りました。(単三×4本)

それでは、自動操作のデモをご覧ください。
ご視聴ありがとうございました。