Camila_99$$
Camila_99$$
DIIDevHeads IoT Integration Server
Created by Camila_99$$ on 9/12/2024 in #code-review
How to Execute a Timed LED On/Off Sequence Using millis() Function
Hello ,I’m struggling with a problem. I want to execute a sequence of turning an LED on and off, but not just a simple on/off; I want a timed sequence that turns the LED on and off at specific intervals. My requirement is to use millis() because other actions need to run in parallel. Here’s what I’ve done:
(currentMillis - timer2 >= 1000 && currentMillis - timer2 < 1100) ? digitalWrite(motor, LOW) : digitalWrite(motor, HIGH);
(currentMillis - timer2 >= 1100 && currentMillis - timer2 < 1500) ? digitalWrite(motor, HIGH) : digitalWrite(motor, LOW);
(currentMillis - timer2 >= 1500 && currentMillis - timer2 < 2000) ? digitalWrite(motor, LOW) : digitalWrite(motor, HIGH);
(currentMillis - timer2 >= 2000 && currentMillis - timer2 < 3000) ? digitalWrite(motor, HIGH) : digitalWrite(motor, LOW);
(currentMillis - timer2 >= 3000 && currentMillis - timer2 < 5000) ? digitalWrite(motor, LOW) : digitalWrite(motor, HIGH);
(currentMillis - timer2 >= 1000 && currentMillis - timer2 < 1100) ? digitalWrite(motor, LOW) : digitalWrite(motor, HIGH);
(currentMillis - timer2 >= 1100 && currentMillis - timer2 < 1500) ? digitalWrite(motor, HIGH) : digitalWrite(motor, LOW);
(currentMillis - timer2 >= 1500 && currentMillis - timer2 < 2000) ? digitalWrite(motor, LOW) : digitalWrite(motor, HIGH);
(currentMillis - timer2 >= 2000 && currentMillis - timer2 < 3000) ? digitalWrite(motor, HIGH) : digitalWrite(motor, LOW);
(currentMillis - timer2 >= 3000 && currentMillis - timer2 < 5000) ? digitalWrite(motor, LOW) : digitalWrite(motor, HIGH);
But this isn’t working as expected. Sequentially, it should look like: - from 0 to 1000 ms = off - from 1000 to 1100 ms = on - from 1100 to 1200 ms = off - from 1200 to 1500 ms = on - etc. Where am I going wrong?🤔
2 replies