Помощь в понимании
- Войдите на сайт для отправки комментариев
Сб, 21/09/2019 - 21:10
Доброго времени суток. Подскажите, пожалуйста, почему не работает данный код?
Включается только 1 светодиод. Если в цикле не использовать условие, а только dellay, то светодиоды включаются по очереди.
int8_t led1 = 9;
int8_t led2 = 10;
int8_t led3 = 11;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop() {
flashing();
}
void flashing(){
int16_t massiv[] = {led1, led2, led3};
uint32_t timer = 0;
int16_t interval = 300;
for (int8_t i = 0; i <= 2; i++){
if (millis() - timer > interval){
digitalWrite(massiv[i], HIGH);
timer = millis();}
}
}
За сколько миллисекунд цикл заканчивается?
Я не совсем понял вопрос. Мне нужна лишь задержка в цикле на каждой итерации в 300мс
Вопрос решен: static uint32_t timer = 0;
Но, может кто-то хочет дополнить и высказаться о недостатках или пользе отказа от delay?
может кто-то хочет дополнить и высказаться о недостатках или пользе отказа от delay?
имхо, это как раз тот случай, где делай оправдан, а миллис совершенно лишний
Так это до тех пор, пока не захочется что ни будь добавить.