есть код 1 Код (Text): #include <Ultrasonic.h> int ledPin = 13; int ledPin2 = 12; Ultrasonic ultrasonic(5, 6); void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop() { float distcm = ultrasonic.Ranging(CM); //измеряем расстояние в см. if( (distcm<=10)&&(distcm>0) ){ digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW);//свет on } while (Serial.available() == 0); distcm = ultrasonic.Ranging(CM); int val = Serial.read() - '0'; if (val == 1) { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); } if (val == 2) { Serial.println(distcm); } Serial.flush(); //это я не знаю для чего, не стал удалять } Есть код 2 Код (Text): float distcm = ultrasonic.Ranging(CM); //измеряем расстояние в см. if( (distcm<=10)&&(distcm>0) ){ digitalWrite(13, HIGH); //свет on } нужно встроить в "код 1" "код 2" так чтобы код 2 выполнялся при 1 вариант - при отправке в сериал 3 и заканчивал выполняться при отправки 4 2 вариант - код 2 выполняется всегда, но при получение в сериал 1 или 2 останвливается и выполняется куски кода из код 1
Чтобы некий код включался и выключался по командам из serial, можно сделать так: Код (Text): boolean flag = false; char c = 0; void loop() { if(Serial.available()) c = Serial.read(); if(c == '3') flag = true; if(c == '4') flag = false; if(flag) { ... } } Сформулируйте нужный алгоритм работы в целом, не надо про куски.
Вообщем по идее должно быть так - в сериале 1 (будет по bluetooth) То делаем какое-то действие (с моторами, но пока идет драйвер со светодиодом), в сериале 2- даннные с датчиков обратно в сериал ,3 - врубаем автоуправление (если до препятствия 10 см и меньше поворачиваем.
НЕ работает если нажимаем четыре и до препятствия меньше 10 светодиод горит секунду если больше вообще ничего 4 тоже вообще ничего