Unity,arduinoでプログラミングをしています。
UnityからArduinoでシリアルデータを送り、ロボットを動かそうとしています。
Loop文の中で、While文でSerial.availableを使っているのですが、なぜか電源を起動した瞬間に(シリアルデータを送っていない状態でも)このWhile文の中を無限ループしています。
原因がわからずつまづいています。よろしくお願いします。
Unity側に問題はないと思います。
Unity側から送られてくるのは、A,B,C,Tと数値です。数値は必ずAの後に来るようにしています。これを配列に格納し、一気にWhile文でArduino側に送り、それに対応した動作を順番に行わせたいです。
void loop() {
if(Serial.available()>0){
dischar[15]={};
a=0;
b=0;
c=0;
int i=0;
flag=1;
distance=0;
while(Serial.available()>0){
dischar[i] = Serial.read();
i++;
}
for(b=0;b<i+1;b++){
if(dischar[b] = 'A'){
flag=2;
}else{
if(isalpha(dischar[b]) != 0){
if(flag==2){
a = a+1;
}
flag=1;
}else{
strnum[a] = strnum[a] + dischar[b];
}
}
}
a=0;
for(c=0;c<i+1;c++){
if(dischar[c] == 'A'){
}else if(dischar[0] == 'B'){
forward();
delay(1000);
stop();
delay(1000);
}else if(dischar[0] == 'C'){
forward();
delay(1000);
stop();
delay(1000);
}else if(dischar[0] == 'T'){
turn();
delay(2000);
stop();
delay(1000);
}else{
distance = atoi(&strnum[a]);
distime=distance*1000;
forward();
delay(distime);
stop();
delay(1000);
a=a+1;
}
}
}
}
回答2件
あなたの回答
tips
プレビュー