Помогите с программированием.
- Войдите на сайт для отправки комментариев
Ср, 15/08/2018 - 17:56
Подскажите пожалуйста новичку с кодом:
Как с помощью mills заставить светодиоды загораться по очереди через определенный интервал времени?
Например: светодиод led0 400мс горит, затем тухнет и через 1100мс загорается следующий (скажем led1) и т.д.
(чтоб они не моргали пока до них не дойдет очередь)
Написал через поначалу через delay, но там циклы переключаются не сразу. Через Mills немогу сообразить как ...)
const int led12 = 12;
int led0 = 0;
int led1 = 1;
int led3 = 3;
int led4 = 4;
int led13 = 13;
int buttonState = 0;
void setup()
{
pinMode(led12, INPUT);
pinMode(led0, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led13, OUTPUT);
}
//===========================================================================
void loop() {
buttonState = digitalRead(led12);
if(buttonState == LOW){
digitalWrite (led13, HIGH);
delay (random (1000, 1500));
digitalWrite (led13, LOW);
delay (random (1000, 1500));
}
else{
digitalWrite (led0, HIGH);
delay (300);
digitalWrite (led0, LOW);
delay (1200);
digitalWrite (led1, HIGH);
delay (300);
digitalWrite (led1, LOW);
delay (1200);
digitalWrite (led1, HIGH);
delay (300);
digitalWrite (led1, LOW);
delay (1200);
digitalWrite (led3, HIGH);
delay (300);
digitalWrite (led3, LOW);
delay (1200);
digitalWrite (led0, HIGH);
delay (300);
digitalWrite (led0, LOW);
delay (1200);
digitalWrite (led1, HIGH);
delay (300);
digitalWrite (led1, LOW);
delay (1200);
digitalWrite (led1, HIGH);
delay (300);
digitalWrite (led1, LOW);
delay (1200);
digitalWrite (led4, HIGH);
ddelay (300);
digitalWrite (led4, LOW);
delay (1200);
}
}
насчет мерцания, схему подключения можно ?
Написал через поначалу через delay, но там циклы переключаются не сразу. Через Mills немогу сообразить как ...)
А чем Вас delay не устраивает?
Как с помощью mills заставить светодиоды загораться по очереди через определенный интервал времени?
}
Общий алгоритм:
при заходе в else 28 строка считываем myTime=millis(), далее делаем цикл while() с условием состояния кнопки.
далее
и т.д.
Не идеально, но для понимания сути подойдет.
я тут заметил ,что у вас led0 = 0 и led1 = 1 ,если я прявильно помню , то это как раз выводы UART через который заливаеться прошивка в Ардуино, это может обьяснить мерцания .
я тут заметил ,что у вас led0 = 0 и led1 = 1 ,если я прявильно помню , то это как раз выводы UART через который заливаеться прошивка в Ардуино, это может обьяснить мерцания .
да нет, вряд ли - в самом скетче Serial не используется, значит можно занимать пины 0 и 1 без проблем