Помощь в понимании
- Войдите на сайт для отправки комментариев
Сб, 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?
имхо, это как раз тот случай, где делай оправдан, а миллис совершенно лишний
Так это до тех пор, пока не захочется что ни будь добавить.