int led[6]={7,6,5,4,3,2};
int sw[6]={A5,A4,A3,A2,A1,A0};
bool swStateBefore[6]={0,0,0,0,0,0};
bool swStateNow[6]={0,0,0,0,0,0};
int indexChanged;
bool isChanged=false;
bool ledState[6]={0,0,0,0,0,0};
void setup(){
for(int i=0; i<6; i++){
pinMode(led[i], OUTPUT);
pinMode(sw[i], INPUT_PULLUP);
swStateBefore[i]=digitalRead(sw[i]);
}
pinMode (8,OUTPUT);
}
void loop(){
get_sw_state();
compare_sw_state();
extraLed();
}
void get_sw_state(){
for(int i=0; i<6; i++){
swStateNow[i]=digitalRead(sw[i]);
}
}
void compare_sw_state(){
for(int i=0; i<6; i++){
if(swStateNow[i] != swStateBefore[i]){
indexChanged=i;
swStateBefore[i]=swStateNow[i];
ledState[i]=!ledState[i];
for(int j=0; j<6; j++){
if(j!=i){
ledState[j]=0;
}
digitalWrite(led[j],ledState[j]);
}
}
}
}
void extraLed(){
bool status=0;
for(int i=0; i<6; i++){
status |= digitalRead(led[i]);
}
digitalWrite(8,status);
}