ПРОБЛЕМА С КОДОМ ПОМОГИТЕ
- Войдите на сайт для отправки комментариев
Ср, 29/07/2020 - 19:17
Всем здравствуйте!Впервые в ардуино хотелось сделать так что при нажатии в форме на "1" загорался 13 пин светодиода встроенного,при нажатии на "0" выключался.При нажатии на "2" выполнялось цикличное мигание пока не нажму еще одну любые из цифр
ПРОБЛЕМА в том что все работает,но при включении цикла,когда хочу переключить выключить светодиод-- не получается!Помогите по простому что б компактно и я понял :) Заранее спасибо
byte num;
void setup() {
Serial.begin(9600);
pinMode(13,1);
}
void loop() {
if (Serial.available() > 0) {
num=Serial.read();
if (num == '0' ) {
digitalWrite(13,0);
}
if (num == '1' ) {
digitalWrite(13,1);
}
while (num == 2) {
digitalWrite(13,1);
delay(500);
digitalWrite(13,0);
delay(500);
if (num!=2){
break;
}
}
delay(50);
}
delay (3);
}
обратите внимание, как у вас по разному записаны условия в строках 17 и 20
В цикле while не считывается нажатие кнопки. Он не попадает в loop(). Делай изменение num отдельной функцией и вызывай где надо.
напишите код,не пойму вас
А ГДЕ У ТЕБЯ ОБРАБОТКА ВЫХОДА ИЗ ЦЫКЛА?
А ГДЕ У ТЕБЯ ОБРАБОТКА ВЫХОДА ИЗ ЦЫКЛА?
обработка выхода как раз есть :) - строки 25-26
Судя по нечленораздельным замечаниям, этот код ТС скопировал где-то в инете и сам ни черта не понимает, спрашивать про цЫклы тут бесполезно :)
А ГДЕ У ТЕБЯ ОБРАБОТКА ВЫХОДА ИЗ ЦЫКЛА?
обработка выхода как раз есть :) - строки 25-26
а как он из сериал этот нум прочитает?
писал сам,не могу разобраться
вас попросили помочь новичку,а не выпендриваться
Нет в первопосте просьбы не выпендриваться нет, не брешите.
вас попросили помочь новичку,а не выпендриваться
счего ты решил что тебе тут ктото чтото должен?
byte num; void updateNum() { if (Serial.available() > 0) { num = Serial.read(); } } void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { updateNum(); if (num == 0) { digitalWrite(13, 0); } else if (num == 1) { digitalWrite(13, 1); } do { digitalWrite(13, 1); delay(500); digitalWrite(13, 0); delay(500); updateNum(); } while (num == 2); }Не понял зачем там в конце нужны delay()
Вот как то так оно должно примерно выглядеть. На работоспособность не проверял.
Если потребуются дальнейшие доработки, переведите 100 рублей на карту хххх хххх хххх хххх :D
А лучше самому научиться писать.
при нажатии кнопки "0" num не будет равен нулю, а остальное вроде ОК :)
при нажатии кнопки "0" num не будет равен нулю, а остальное вроде ОК :)
Если потребуются дальнейшие доработки, переведите 100 рублей на карту хххх хххх хххх хххх :D