I'm new in Arduino and today I have a problem with this code:
int led_1 = 10;
int led_2 = 11;
int led_3 = 12;
int button = 3;
int time = 0;
byte val = 0;
void setup() {
// put your setup code here, to run once:
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
val = digitalRead(button);
if (val == HIGH){
time = millis();
while (digitalRead(button) == HIGH){
if (millis() - time < 1000) {digitalWrite(led_1, HIGH);}
else if (millis() -time > 1000 && millis()-tempo <2000) {digitalWrite(led_2, HIGH);}
else if (millis()-time >2000) {digitalWrite(led_3, HIGH);}
}
}
else {
time =0;
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
}
}
The code should works like: If I press the button less then one second, led_1 will turns on. If I press more between one two seconds led_2 will turns on and If I press the button more than 2 seconds led_3 will turns on. If I don't press the button the led remain low. The time variable is used to take the time when I start to press the button and then the control millis()- time should give how long I press the button.
It works for a while, then after a random time (I think) if I push the button, only the led_3 turns on. Why?