CLASロボットカーを手動操縦し、スマートフォンで走行軌跡を確認します。
Romeo V2にArduinoIDEで下記スケッチを書き込みます(ESP32-DevKitとはボードの種類とシリアルポートを変更する必要があります)。書き込むとラジコンカーをプロポで操作できるようになります。
----------------------------------------------------------------------------------
#include <Servo.h>
Servo RCservo;
Servo RCmotor;
volatile unsigned long UpNew[] = {0, 0};
volatile unsigned long UpOld[] = {0, 0};
volatile unsigned long DownNew[] = {0, 0};
volatile unsigned long DownOld[] = {0, 0};
volatile int Val[] = {0, 0};
void setup() {
pinMode(2, INPUT_PULLUP); //Leonardoの割り込み対応ピン
pinMode(3, INPUT_PULLUP); //Leonardoの割り込み対応ピン
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), SERVO, CHANGE);
attachInterrupt(digitalPinToInterrupt(3), MOTOR, CHANGE);
RCservo.attach(10); // RCのステアリングサーボ
RCmotor.attach(11); // RCのモーター
}
void loop() {
int buf = Angle(0);
RCservo.write(buf);
buf = Angle(1)+5; // +5は補正値
RCmotor.write(buf);
}
void SERVO() {
if (digitalRead(2) == LOW) {
DownOld[0] = DownNew[0];
DownNew[0] = micros();
} else {
UpOld[0] = UpNew[0];
UpNew[0] = micros();
}
}
void MOTOR() {
if (digitalRead(3) == LOW) {
DownOld[1] = DownNew[1];
DownNew[1] = micros();
} else {
UpOld[1] = UpNew[1];
UpNew[1] = micros();
}
}
int Angle(byte i) {
if (UpNew[i] <= DownNew[i]) {
Val[i] = ((((DownNew[i] - UpNew[i]) * 10000) / ((UpNew[i] - UpOld[i])) * 0.01) - 4.6) * 22.25; // 4.6は補正値
}
else {
Val[i] = ((((DownNew[i] - UpOld[i]) * 10000) / (UpNew[i] - UpOld[i]) * 0.01) - 4.6) * 22.25; // 4.6は補正値
} return Val[i];
}
----------------------------------------------------------------------------------
ESP32-DevKitに書き込んだスケッチはDay2のままで、Day3のとおりモバイルバッテリーを接続し、ラジコンカー本体の電源をONにします。
スマートフォンのAgriBus-NAVIを起動し、接続先デバイスとして「NMEA_esp32」を選択してBluetooth接続します。
CLASロボットカーをプロポで手動操作すると、AgriBus-NAVIにCLASロボットカーの走行軌跡が表示されます。
※この動画は自律走行のスケッチをESP32-DevKitに書き込みCLASロボットカーを走行させたものです。自律走行のサンプルスケッチをご要望の場合はページ上部のお問い合わせフォームからご連絡ください。