完成品の画像
コントローラーがめちゃくちゃ大きいです。
使用したもの
Arduino Uno R3 ×2 XBee ZB(S2C)ワイヤアンテナ型 ×2 デュアルモータードライバDRV8835 タミヤ ユニバーサルプレート (2枚セット) タミヤ ユニバーサルプレート用スライドアダプター タミヤ スポーツタイヤセット (56mm径) タミヤ ボールキャスター (2セット入) タミヤ ダブルギヤボックス(左右独立4速タイプ)
その他ブレッドボード、電源、キーボード用キーなど。
以前にも似たような車を作りました。
touch-sp.hatenablog.com
以前使用したモータードライバは異臭と煙を出して壊れたため、今回新しいものをSwitch Scienceから購入しました。
www.switch-science.com
Arduinoスケッチ
コントローラー側
const int buttonON = LOW; const int buttonPin_1 = 7; const int buttonPin_2 = 8; const int buttonPin_3 = 9; const int buttonPin_4 = 10; const int buttonPin_5 = 11; void setup() { pinMode(buttonPin_1, INPUT_PULLUP); pinMode(buttonPin_2, INPUT_PULLUP); pinMode(buttonPin_3, INPUT_PULLUP); pinMode(buttonPin_4, INPUT_PULLUP); pinMode(buttonPin_5, INPUT_PULLUP); Serial.begin(9600); } void loop() { if(digitalRead(buttonPin_1) == buttonON){ Serial.write(0); } if(digitalRead(buttonPin_2) == buttonON){ Serial.write(1); } if(digitalRead(buttonPin_3) == buttonON){ Serial.write(2); } if(digitalRead(buttonPin_4) == buttonON){ Serial.write(3); } if(digitalRead(buttonPin_5) == buttonON){ Serial.write(4); } }
車側
const int mode_pin = 7; const int right_enbl = 5; const int right_phase = 6; const int left_enbl = 9; const int left_phase = 10; void setup() { pinMode(mode_pin, OUTPUT); pinMode(right_enbl, OUTPUT); pinMode(right_phase, OUTPUT); pinMode(left_enbl, OUTPUT); pinMode(left_phase, OUTPUT); Serial.begin(9600); //modeはHIGH digitalWrite(mode_pin, HIGH); //right_wheelストップ digitalWrite(right_phase, HIGH); analogWrite(right_enbl, 0); //left_wheelストップ digitalWrite(left_phase, HIGH); analogWrite(left_enbl, 0); } void loop() { if(Serial.available()>0){ int read_serial; read_serial = Serial.read(); //ストップ if(read_serial==0){ analogWrite(right_enbl, 0); analogWrite(left_enbl, 0); } //前進 if(read_serial==1){ digitalWrite(right_phase, HIGH); analogWrite(right_enbl, 200); digitalWrite(left_phase, HIGH); analogWrite(left_enbl, 200); } //右回り if(read_serial==2){ digitalWrite(right_phase, LOW); analogWrite(right_enbl, 180); digitalWrite(left_phase, HIGH); analogWrite(left_enbl, 180); } //後進 if(read_serial==3){ digitalWrite(right_phase, LOW); analogWrite(right_enbl, 200); digitalWrite(left_phase, LOW); analogWrite(left_enbl, 200); } //左回り if(read_serial==4){ digitalWrite(right_phase, HIGH); analogWrite(right_enbl, 180); digitalWrite(left_phase, LOW); analogWrite(left_enbl, 180); } } }