#define n_floors 5
#define upbtn 3
#define dwnbtn 2
#define upled 10
#define dwnled 4
bool upbtn_stat = LOW;
bool upbtn_prestat = HIGH;
bool dwnbtn_stat = LOW;
bool dwnbtn_prestat = HIGH;
int leds[n_floors] = {5,6,7,8,9};
unsigned int speed = 500;
void setup() {
Serial.begin(9600);
// Set all pins as digital outputs:
for(int i = 0; i < n_floors; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, 0);
//Set buttons as inputs:
pinMode(upbtn, INPUT_PULLUP);
pinMode(dwnbtn, INPUT_PULLUP);
pinMode(upled, OUTPUT);
pinMode(dwnled, OUTPUT);
digitalWrite(upled, LOW);
digitalWrite(dwnled, LOW);
}
void loop() {
if(upbtn_stat != upbtn_prestat && digitalRead(upbtn) == LOW){
delay(100);
digitalWrite(dwnled, LOW);
digitalWrite(upled, HIGH);
for(int l = 0; l < n_floors; l++){
digitalWrite(leds[l],HIGH);
delay(speed/6);
digitalWrite(leds[l-1],LOW);
delay(speed);
}
upbtn_prestat = !upbtn_stat;
}
if(dwnbtn_stat != dwnbtn_prestat && digitalRead(dwnbtn) == LOW){
delay(100);
digitalWrite(upled, LOW);
digitalWrite(dwnled, HIGH);
for(int l = n_floors - 1; l >= 0; l--){
if (l == n_floors - 1){
digitalWrite(n_floors, LOW);
delay(speed);
}else{
digitalWrite(leds[l], HIGH);
delay(speed/6);
digitalWrite(leds[l+1], LOW);
delay(speed);
}
}
dwnbtn_prestat = !dwnbtn_stat;
}
}