I am using millis to tell leds to come on and off at specifically the right time (the leds are synced with music). I think I might be miss using millis but i got it to do what i want.
I am using codes like:
if(currentMillis - prevm == (interval + 9500)){
digitalWrite(ledYR,HIGH);
so that the led will turn on after 9.5 seconds.
This all works but now i want to fade leds, use arrays, and use for loops at the right time, so i need the if statement to be true for longer than just that one second.
How could i go about this?
is there a way to set a range of time for the if statement to be true.
Like:
if(currentMillis - prevm == (interval + 7000 to 9500)){
digitalWrite(ledYR,HIGH);
or maybe something that says its true if greater than 8000 but less than 9500
Here is my whole code:
const int ledBR = 13;
const int ledGR = 12;
const int ledRR = 11;
const int ledYR = 10;
const int ledBL = 9;
const int ledGL = 8;
const int ledRL = 7;
const int ledYL = 6;
const int ledW = 5;
const int ledUV = 4;
long prevm = 0;
long interval = 0;
void setup(){
pinMode(ledBR, OUTPUT);
pinMode(ledGR, OUTPUT);
pinMode(ledRR, OUTPUT);
pinMode(ledYR, OUTPUT);
pinMode(ledBL, OUTPUT);
pinMode(ledGL, OUTPUT);
pinMode(ledRL, OUTPUT);
pinMode(ledYL, OUTPUT);
pinMode(ledW, OUTPUT);
pinMode(ledUV, OUTPUT);
analogWrite(ledW, 50);
}
void loop(){
unsigned long currentMillis = millis();
if(currentMillis - prevm == (interval + 1000)){
digitalWrite(ledRL, HIGH);}
if(currentMillis - prevm == (interval + 1500)){
digitalWrite(ledRL, LOW);}
if(currentMillis - prevm == (interval + 2000)){
digitalWrite(ledRL, HIGH);}
if(currentMillis - prevm == (interval + 2500)){
digitalWrite(ledRL, LOW);}
if(currentMillis - prevm == (interval + 4500)){
digitalWrite(ledW, LOW);}
if(currentMillis - prevm == (interval + 9500)){
digitalWrite(ledYR,HIGH);
digitalWrite(ledYL,HIGH);}
if(currentMillis - prevm == (interval + 21500)){
digitalWrite(ledBR, HIGH);
digitalWrite(ledGR, HIGH);
digitalWrite(ledRR, HIGH);
digitalWrite(ledBL, HIGH);
digitalWrite(ledGL, HIGH);
digitalWrite(ledRL, HIGH);}
if(currentMillis - prevm == (interval + 24000)){
digitalWrite(ledUV, HIGH);}
if(currentMillis - prevm == (interval + 27000)){
digitalWrite(ledW,HIGH);}
if(currentMillis - prevm == (interval + 30000)){
digitalWrite(ledBR, LOW);
digitalWrite(ledGR, LOW);
digitalWrite(ledRR, LOW);
digitalWrite(ledBL, LOW);
digitalWrite(ledGL, LOW);
digitalWrite(ledRL, LOW);
digitalWrite(ledUV, LOW);
digitalWrite(ledW, LOW);
digitalWrite(ledYL, LOW);
digitalWrite(ledYR, LOW);}
}
Thank you so much if you can help!!
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.