int switchState = 0;
int lastSwitchState = 0;
int count = 0;
void setup() {
pinMode(2,INPUT);
Serial.begin(9600); // debug
}
void loop() {
// counter
switchState = digitalRead(2);
if (switchState == HIGH && lastSwitchState == 0){
count++;
if (count > 13){
count = 0;
}
lastSwitchState = 1;
}
else if (switchState == LOW){
lastSwitchState = 0;
}
// charlieplex
if (count == 0){
pinMode(3, OUTPUT);
digitalWrite(3,LOW);
pinMode(4, OUTPUT);
digitalWrite(4,LOW);
pinMode(5, OUTPUT);
digitalWrite(5,LOW);
pinMode(6, OUTPUT);
digitalWrite(6,LOW);
}
else if (count == 1){
pinMode(6, INPUT);
digitalWrite(6,LOW);
pinMode(5, INPUT);
digitalWrite(5, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
}
else if (count == 2){
pinMode(6, INPUT);
digitalWrite(6,LOW);
pinMode(5, INPUT);
digitalWrite(5, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
}
else if (count == 3){
pinMode(6, INPUT);
digitalWrite(6,LOW);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
else if (count == 4){
pinMode(6, INPUT);
digitalWrite(6,LOW);
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
else if (count == 5){
pinMode(6, OUTPUT);
digitalWrite(6,LOW);
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
pinMode(4, INPUT);
digitalWrite(4, LOW);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
else if (count == 6){
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
pinMode(4, INPUT);
digitalWrite(4, LOW);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
else if (count == 7){
pinMode(6, INPUT);
digitalWrite(6,LOW);
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
pinMode(4, INPUT);
digitalWrite(4, LOW);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
}
else if (count == 8){
pinMode(6, INPUT);
digitalWrite(6,LOW);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
pinMode(4, INPUT);
digitalWrite(4, LOW);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
}
else if (count == 9){
pinMode(6, OUTPUT);
digitalWrite(6,LOW);
pinMode(5, INPUT);
digitalWrite(5, LOW);
pinMode(4, INPUT);
digitalWrite(4, LOW);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
}
else if (count == 10){
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(5, INPUT);
digitalWrite(5, LOW);
pinMode(4, INPUT);
digitalWrite(4, LOW);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
}
else if (count == 11){
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(5, INPUT);
digitalWrite(5, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
else if (count == 12){
pinMode(6, OUTPUT);
digitalWrite(6,LOW);
pinMode(5, INPUT);
digitalWrite(5, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
// TEST COUNTER number 13
// test 1) LED 1 and 2 on at the same time: NOT POSSIBLE
// test 2) HHHL (line 3 L) LED 2-7-10 are on: POSSIBLE
// test 3) HHLL (line 3 & 4 H) LED 3-8-9-12 are one: POSSIBLE
else if (count == 13){
pinMode(6, OUTPUT);
digitalWrite(6,LOW);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
}
// debug lines
Serial.print("count number: ");
Serial.println(count);
}