I have changed the code with some help here. There are two buttons each one is set to turn on a LED. When the LED turns on it is timed and when the time is up it turns off. The problem I am having is that only one LED can be on at a time even though I am not using the delay() and I am using millis() to keep track of time. So if I press button one the first LED will turn on. Even if I press button two at this time the second LED wont turn on until the first one turns off.
const int ledPin2 = 2;
const int ledPin3 = 3;
const int buttonPin6 = 6;
const int buttonPin7 = 7;
const unsigned long onTime = 10000;
unsigned long previousMillis = 0;
void timer() {
unsigned long previousMillis = millis();
unsigned long currentMillis = millis();
digitalWrite(ledPin2, HIGH);
while ((currentMillis - previousMillis) < onTime) {
currentMillis = millis();
}
digitalWrite(ledPin2, LOW);
}
void timer2() {
unsigned long previousMillis = millis();
unsigned long currentMillis = millis();
digitalWrite(ledPin3, HIGH);
while ((currentMillis - previousMillis) < onTime) {
currentMillis = millis();
}
digitalWrite(ledPin3, LOW);
}
void setup() {
Serial.begin(9600);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buttonPin6, INPUT);
pinMode(buttonPin7, INPUT);
}
void loop() {
int buttonState2 = digitalRead(buttonPin6);
if (buttonState2 == HIGH) timer2();
int buttonState = digitalRead(buttonPin7);
if (buttonState == HIGH) timer();
}