Trying to get one LED to copy what another LED does?
Attempting to learn coding, when I put the "if" statement in the led1 does not light up.
What am I doing wrong?
int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int delayH = 500;
int delayL = 500;
int delayBreak = 50;
void setup() {
// put your setup code here, to run once:
if (led1 = HIGH) {
digitalWrite (3, HIGH);
}
pinMode(led1, OUTPUT); // initiates led pin as an output
pinMode(led2, OUTPUT); // ""
pinMode(led3, OUTPUT); // ""
pinMode(led4, OUTPUT); // ""
}
void loop() {
// put your main code here, to run repeatedly:
//flash sequence left to right of LEDs
digitalWrite(led1, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led2, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led2, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led4, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led4, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
delay(delayBreak); //provides a delay as per int delayBreak
//flash sequence right to left of LEDs
digitalWrite(led4, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led4, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led2, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led2, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led1, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
delay(delayL);
delay(delayBreak); //provides a delay as per int delayBreak
}
Cheers JimLee, that fixed the led1 not switching on but my pin 3 is not switching on (I have an LED in pin 3)
int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int delayH = 500;
int delayL = 500;
int delayBreak = 50;
void setup() {
// put your setup code here, to run once:
if (led1 == HIGH) {
digitalWrite (3, HIGH);
}
pinMode(led1, OUTPUT); // initiates led pin as an output
pinMode(led2, OUTPUT); // ""
pinMode(led3, OUTPUT); // ""
pinMode(led4, OUTPUT); // ""
pinMode(3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
//flash sequence left to right of LEDs
digitalWrite(led1, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led2, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led2, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led4, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led4, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
delay(delayBreak); //provides a delay as per int delayBreak
//flash sequence right to left of LEDs
digitalWrite(led4, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led4, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led2, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led2, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led1, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
delay(delayL);
delay(delayBreak); //provides a delay as per int delayBreak
}`
Even if you do the correct compare in the if condition, the condition will always evaluate to false. Reason is that HIGH is defined as 1 and 13 is never equal to 1.
int led1 = 9;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int delayH = 500;
int delayL = 500;
int delayBreak = 50;
void setup() {
// put your setup code here, to run once:
pinMode(led1, OUTPUT); // initiates led pin as an output
pinMode(led2, OUTPUT); // ""
pinMode(led3, OUTPUT); // ""
pinMode(led4, OUTPUT); // ""
pinMode(3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (led1 == HIGH) {
digitalWrite (3, HIGH);
}
//flash sequence left to right of LEDs
digitalWrite(led1, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led2, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led2, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led4, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led4, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
delay(delayBreak); //provides a delay as per int delayBreak
//flash sequence right to left of LEDs
digitalWrite(led4, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led4, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led2, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led2, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
digitalWrite(led1, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
delay(delayL);
delay(delayBreak); //provides a delay as per int delayBreak
}
To make led3 do what led1 is doing with your delay-based coding, you'll have to duplicate the writes:
digitalWrite(led1, HIGH); //digital writes led as a high
digitalWrite(led3, HIGH); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
digitalWrite(led3, LOW); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
You could treat led1 as a button and write:
digitalWrite(led1, HIGH); //digital writes led as a high
digitalWrite(led3, digitalRead(led1)); //digital writes led as a high
delay(delayH); //provides a delay as per int delayH
digitalWrite(led1, LOW); //digital writes led as a low
digitalWrite(led3, digitalRead(led1)); //digital writes led as a low
delay(delayL); //provides a delay as per int delayL
...but using delays means that you have to make the changes at the same time--in between the delays.
Or maybe I don't understand the behavior you want.