//configure pin connections int P1 = 7; int P2 = 6; int P3 = 5; int P4 = 4; void high_Z_all(){ //set all used pins to HIGH-Z pinMode(P1, INPUT); pinMode(P2, INPUT); pinMode(P3, INPUT); pinMode(P4, INPUT); } void charlieWrite(int x){ //set all pins to HIHG-Z state high_Z_all(); switch(x) { case 0: //all LEDs are turned off break; case 1: //set pin 1 and 2 to OUTPUT pinMode(P1, OUTPUT); pinMode(P2, OUTPUT); //set pin 1 to HIGH; digitalWrite(P1, HIGH); //pin 2 is already set to LOW because we that is the default state break; case 2: pinMode(P1, OUTPUT); pinMode(P3, OUTPUT); digitalWrite(P1, HIGH); break; case 3: pinMode(P1, OUTPUT); pinMode(P4, OUTPUT); digitalWrite(P1, HIGH); break; case 4: pinMode(P2, OUTPUT); pinMode(P1, OUTPUT); digitalWrite(P2, HIGH); break; case 5: pinMode(P2, OUTPUT); pinMode(P3, OUTPUT); digitalWrite(P2, HIGH); break; case 6: pinMode(P2, OUTPUT); pinMode(P4, OUTPUT); digitalWrite(P2, HIGH); break; case 7: pinMode(P3, OUTPUT); pinMode(P1, OUTPUT); digitalWrite(P3, HIGH); break; case 8: pinMode(P3, OUTPUT); pinMode(P2, OUTPUT); digitalWrite(P3, HIGH); break; case 9: pinMode(P3, OUTPUT); pinMode(P4, OUTPUT); digitalWrite(P3, HIGH); break; case 10: pinMode(P4, OUTPUT); pinMode(P1, OUTPUT); digitalWrite(P4, HIGH); break; case 11: pinMode(P4, OUTPUT); pinMode(P2, OUTPUT); digitalWrite(P4, HIGH); break; case 12: pinMode(P4, OUTPUT); pinMode(P3, OUTPUT); digitalWrite(P4, HIGH); break; } } void setup(){ } void loop(){ //execute a loop that starts with all LEDs off and then //turns them on, one by one for 0.5s int i; for(i=0;i<=12;i++){ charlieWrite(i); delay(500); } }