Чем заменить?

Sanya394
Offline
Зарегистрирован: 11.12.2013

Добрый день!

Не поможете? Чем заменить 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);
   }

 }

}

 

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Традиционная замена на millis() - уже не помогает?

Sanya394
Offline
Зарегистрирован: 11.12.2013

У меня не получается заменить.

Сколько не пытался.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Цель какая заменить delay? Всё же работает?

Sanya394
Offline
Зарегистрирован: 11.12.2013

Работать то работает. Но мне параллельно нужно выполнять другое действие.

Sanya394
Offline
Зарегистрирован: 11.12.2013

Работать то работает. Но мне параллельно нужно выполнять другое действие.

Sanya394
Offline
Зарегистрирован: 11.12.2013

Работать то работает. Но мне параллельно нужно выполнять другое действие.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Нарисуйте временную диаграмму событий. В точке начала отсчета сохраните текущее значение millis() в переменную, потом время от времени сравнивайте текущий millis() с сохраненным временем точки начала отсчета плюс временное смещение и производите следующее действие. Когда действия закончатся, сбросьте сохраненное в точке начала отсчета время и ждите снова точки начала отсчета.

 

Sanya394
Offline
Зарегистрирован: 11.12.2013

Дело в том что я только начинаю изучать програмирование, вы бы не могли дать пример кода?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

На форуме есть несколько тем с похожим (если не сказать, аналогичным) содержимым с примерами кодов. Я написал алгоритм, который поможет подстроить код под Вашу задачу. В ArduinoIDE есть простой пример на эту тему BlinkWithoutDelay.