// Charlieplexing 5 LEDs on 3 pins
int pins[] = {2, 3, 4}; // 3 Arduino pins
// LED mapping: {highPin, lowPin}
int leds[5][2] = {
{2, 3}, // LED1
{3, 2}, // LED2
{3, 4}, // LED3
{4, 3}, // LED4
{4, 2} // LED5
};
void setup() {
// nothing special
}
void loop() {
for (int i = 0; i < 5; i++) {
lightLED(i);
delay(300);
}
}
void lightLED(int led) {
int highPin = leds[led][0];
int lowPin = leds[led][1];
// Set all as INPUT first (high impedance)
for (int i = 0; i < 3; i++) {
pinMode(pins[i], INPUT);
}
// Drive one HIGH, one LOW
pinMode(highPin, OUTPUT);
pinMode(lowPin, OUTPUT);
digitalWrite(highPin, HIGH);
digitalWrite(lowPin, LOW);
}