Всем привет. Разьясните ситуацию, пожалуйста. Идея - отсылаем по сериалу на ардуину с компа "1" - ардуино мигает в одной последовательности лампочек, отправляем "2" - в другой последовательности. Причем при отсылке на ардуино команды запуска функции перебора на компьютер обратно отсылается информация о принятой команде (1 или 2) и проверочная информация (это уже для себя как проверка) - какой именно массив, цикл работает. Но при работе, происходят сбои: При отсылке "1" - процесс зацикливается в первом цикле и выйти из него уже не получается... даже при отсылке "2" - ардуино ее не воспринимает почему то... почему? Код (Text): int pin13 =13; int pin12 =12; int pin11 =11; int pin10 =10; byte massive1[] ={13,12,11,10}; byte massive2[] ={10,11,12,13}; void setup() { pinMode(pin13, OUTPUT); pinMode(pin12, OUTPUT); pinMode(pin11, OUTPUT); pinMode(pin10, OUTPUT); Serial.begin(9600); } void loop() { while(Serial.available()==0); int val = Serial.read() -'0'; while(val == 1) { for(int i =0; i<4; i++) { Serial.println("Massive 1 is working "); Serial.println(massive1[i]); Serial.println(val); digitalWrite(massive1[i],HIGH); delay(5); digitalWrite(massive1[i],LOW); delay(400); } } while(val == 2) { for(int i =0; i<4; i++) { Serial.println("Massive 2 is working "); Serial.println(massive2[i]); Serial.println(val); digitalWrite(massive2[i],HIGH); delay(5); digitalWrite(massive2[i],LOW); delay(400); } } }
Как же программа примет очередную команду, если она крутится в бесконечном цикле while(val == 1)? Код (Text): int pin13 =13; int pin12 =12; int pin11 =11; int pin10 =10; byte massive1[] ={ 13,12,11,10}; byte massive2[] ={ 10,11,12,13}; void setup() { pinMode(pin13, OUTPUT); pinMode(pin12, OUTPUT); pinMode(pin11, OUTPUT); pinMode(pin10, OUTPUT); Serial.begin(9600); } int val = 0; void loop() { while(Serial.available()==0); val = Serial.read() -'0'; if(val == 1) { for(int i =0; i<4; i++) { Serial.println("Massive 1 is working "); Serial.println(massive1[i]); Serial.println(val); digitalWrite(massive1[i],HIGH); delay(5); digitalWrite(massive1[i],LOW); delay(400); } } if(val == 2) { for(int i =0; i<4; i++) { Serial.println("Massive 2 is working "); Serial.println(massive2[i]); Serial.println(val); digitalWrite(massive2[i],HIGH); delay(5); digitalWrite(massive2[i],LOW); delay(400); } } }
Вот тут она разве не должна ее принять? если нет, то почему? Выражение присваивания не находится в теле цикла