Чем заменить?
- Войдите на сайт для отправки комментариев
Ср, 11/12/2013 - 20:45
Добрый день!
Не поможете? Чем заменить delay? В данном коде.
Буду очень благодарен.
int ledPin_1 = 9; int ledPin_2 = 10; void setup() { Serial.begin(9600); pinMode(ledPin_1, OUTPUT); pinMode(ledPin_2, OUTPUT); } void loop() { if (Serial.available() > 0) { int i = Serial.read()-48; { if (i == 1)digitalWrite(ledPin_1,HIGH); delay(3000); digitalWrite(ledPin_1,LOW); } { if (i == 2)digitalWrite(ledPin_2,HIGH), digitalWrite(ledPin_1,HIGH); delay(200); digitalWrite(ledPin_2,LOW); delay(3000); digitalWrite(ledPin_1,LOW); } } }
Традиционная замена на millis() - уже не помогает?
У меня не получается заменить.
Сколько не пытался.
Цель какая заменить delay? Всё же работает?
Работать то работает. Но мне параллельно нужно выполнять другое действие.
Работать то работает. Но мне параллельно нужно выполнять другое действие.
Работать то работает. Но мне параллельно нужно выполнять другое действие.
Нарисуйте временную диаграмму событий. В точке начала отсчета сохраните текущее значение millis() в переменную, потом время от времени сравнивайте текущий millis() с сохраненным временем точки начала отсчета плюс временное смещение и производите следующее действие. Когда действия закончатся, сбросьте сохраненное в точке начала отсчета время и ждите снова точки начала отсчета.
Дело в том что я только начинаю изучать програмирование, вы бы не могли дать пример кода?
На форуме есть несколько тем с похожим (если не сказать, аналогичным) содержимым с примерами кодов. Я написал алгоритм, который поможет подстроить код под Вашу задачу. В ArduinoIDE есть простой пример на эту тему BlinkWithoutDelay.