arduinoでdelay関数がうまく機能してくれません
現在、arduino,unityを用いてロボットを動かそうとしています。
unity側から持ってきた変数をarduino側で扱いたいのですが、うまくいきません。
unity側から持ってきたB,Cはプログラム通りに動くのですが、Aに関してはうまくいっていません。Aに関しては、Unity側から「A」と「数字(1桁)」の2つを連続で送っています。
Unity側でデバックしている分には数値や文字はこちらの想定通りに送られています。
・やりたいこと
Unity側から送られた数値によってロボットが進む時間を変えたい。
・現状
ロボットは動くのですが、数値を変えてもdelayの時間が変わらず変化がない状態です。
・試したこと
byte型をlong型に変更してdelayに入れてみた。
解決方法がわからずつまづいています、よろしくお願いします。
追加
返信遅れてすみません、回答ありがとうございます。
お答えいただいたように、次のように書き換えてみました。
そうすると、Aに入ったときにどの数値にも関わらず17秒で止まってしまいました。やはり数値に問題があり、byte型をint型に直すところで間違いがあると思うのですが、その解決方法がわかりません。
よろしくお願いします。
それと、デバック方法としてSerial.print()とありますが、Unityとつないでる状態でシリアルボードはシリアルポートが多重に開いてしまい、使えないと思うのですが、方法があるのでしょうか?こちらもよろしくお願いします。
aはint型です。
void loop() {
if(Serial.available()){
int i=0;
disbyte[5]={};
while(Serial.available()>0){
disbyte[i] = Serial.read();
i++;
}
if(disbyte[0] == 'A'){
a = disbyte[1] - 0x30;
distime = a*1000;
forward();
delay(distime);
stop();
}
if(disbyte[0] == 'B'){
forward();
delay(1000);
stop();
}
if(disbyte[0] == 'C'){
forward();
delay(1000);
stop();
}
}
}