Serial и blink
- Войдите на сайт для отправки комментариев
Пнд, 05/09/2016 - 06:25
Ребят помогите , пытаюсь сделать , что бы при отправке 1 , дуинка включала блинк , пока не получит 0 , но после получения 1 , она идёт в бесконечный цикл.
int led = 13 ; int dan; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0){ dan = Serial.read(); if (dan == '1'){ for (int i ; dan == '1'; ){ digitalWrite(led,HIGH); delay(1000); digitalWrite(led,LOW); delay(1000); } } } if (dan == '0'){ digitalWrite(led,LOW); }
Так. Читаем сериал отдельно, условие проверяем отдельно. У вас сейчас проверка на 1 идет сразу после чтения прям внутри.
Также читаем блинк без делай. И во второй строке тоже значение по умолчанию желательно сделать (например 0 чтобы при включениии не мигала).
Есть такое понятие - флаг. С помощью флага и выполняйте. Алгоритм такой. Если мы получаем 1 то флаг 1 а значить при loop где стоит if флаг == 1 выполнять код с блинком. НО для этого я бы советовал использовать millis чтобы не тормозить программу delay-ями (blinkWithoutDelay)
Читаешь byte в int.