Your "if" statements are not doing what you think they're doing.
It appears that you expect the highlighted statements to be done only if the input is high:
while(endTime>millis()) {
val = digitalRead(inputPin);
if (val == HIGH)digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, LOW);
}
This is not the case. An IF statement only controls ONE statement, not everything that follows it. This is what is happening.
while(endTime>millis()) {
val = digitalRead(inputPin);
if (val == HIGH)
digitalWrite(ledPin1, LOW);// the rest of these are being done regardless of the input
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, LOW);
}
If you want to control more statements than just the single statement after the IF condition, you need to use { } curly braces.
while(endTime>millis()) {
val = digitalRead(inputPin);
if (val == HIGH)
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, LOW);
}
}