byte inPins[] = {0, 1, 2};
byte outPins[] = {3, 4, 5};
enum { ON = HIGH, OFF = LOW };
#define N_BUT sizeof(inPins)
byte ToggleState [N_BUT];
int chkButtons() {
for (unsigned n = 0; n < sizeof(inPins); n++) {
byte BUT = digitalRead(inPins[n]);
if (ToggleState[n] != BUT) {
ToggleState[n] = BUT;
if (OFF == BUT){
return n;
}
}
while (digitalRead(inPins[n]) == LOW) {delay(10);}
}
return -1;
}
void setIO(){
for (unsigned c = 0; c< sizeof(inPins); c++) {
pinMode (inPins[c], INPUT_PULLUP);
ToggleState[c] = digitalRead(inPins[c]);
}
for (unsigned d = 0; d< sizeof(outPins); d++) {
pinMode (outPins[d], OUTPUT);
}
}
void setFunctions(){
int n = chkButtons();
if (0 <= n) {
digitalWrite(outPins[n], !digitalRead(outPins[n]));
}
delay(10);
}
void setOFF(){
digitalWrite(outPins[0], HIGH);
digitalWrite(outPins[1], HIGH);
digitalWrite(outPins[2], HIGH);
}
void setup() {
setIO();
setOFF();
}
void loop() {
setFunctions();
}
tiny:PB5
tiny:PB3
tiny:PB4
tiny:GND
tiny:PB0
tiny:PB1
tiny:PB2
tiny:VCC
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
led1:A
led1:C
led2:A
led2:C
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
led3:A
led3:C