Поочередное мигание светодиодов с помощью функции millis
- Войдите на сайт для отправки комментариев
Сб, 11/04/2020 - 17:40
Привет!
Не могу сообразить как правильно заставить поочередно мигать светодиоды с помощью функции millis, с delay то все понятно. Вот скетч как одним мигать, взял с этого форума.
#define LED 13
unsigned long timer_1;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
if(millis() - timer_1 >= 1000) {
timer_1 = millis();
digitalWrite(LED, !digitalRead(LED));
}
}
Пробовал разные варианты и так сяк, все одно лажа.
Можно ли использовать оператор if несколько раз?
показывайте варианты, как пробовали
Конечно лажа - светодиод-то один. Откуда очередности взяться?
Можно ли использовать оператор if несколько раз?
Любой оператор можно использовать несколько раз.
Пробовал разные варианты
Почему ни одного не вижу?
Можно ли использовать оператор if несколько раз?
После первого, каждый следующий раз - $1 (мне) и используй на здоровье.
У него, правда, количество срабатываний ограничено - истирается. Как совсем сотрётся - заменишь. Ну, или регламенто заменяй (как масло в машине) каждые 100 срабатываний, например - должно хватить, если не китайский.
Во сообразил с помощью оператора switch
#define LED 13 #define LEDa 12 unsigned long timer_1; int pereky = 0; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); pinMode(12, OUTPUT); } void loop() { if(millis() - timer_1 >= 2000) { timer_1 = millis(); pereky++; Serial.println(pereky); //digitalWrite(LED, !digitalRead(LED)); } switch (pereky) { case 1: digitalWrite(LED, HIGH); digitalWrite(LEDa, LOW); break; case 2: digitalWrite(LEDa, HIGH); digitalWrite(LED, LOW); pereky = 0; break; } }А нахрена здесь millis()? Из принципа? Тута и delay() сойдет.
Но дорисую Вашу программу - я сегодня добрый, водочки принял :)
int LED; unsigned long timer_1; void setup() { LED=2; Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { if(millis() - timer_1 >= 1000) { timer_1 = millis(); digitalWrite(LED, !digitalRead(LED)); LED++; if(LED==13)LED=2; } }Во сообразил с помощью оператора switch
Это чтоб мне $1 не платить за повторное использование if? До чего ж, блин, народ жадный пошёл!
Для двух светодиодов никакого кейса не нужно - достаточно включать второй светодиод в инверсное (по отношению к первому) состояние.