/*
ATtiny85 Hanukia with Charlieplexing Demo
Press the button to light more candles.
Happy Hanukkah! 🕎
Copyright (C) 2020, Uri Shaked.
*/
uint8_t leds[][2] = {
/* { Anode, Cathode } */
{ PB1, PB0 },
{ PB0, PB1 },
{ PB2, PB0 },
{ PB0, PB2 },
{ PB1, PB2 },
{ PB0, PB4 },
{ PB1, PB4 },
{ PB2, PB4 },
{ PB2, PB1 },
};
void ledOn(int index) {
int anode = leds[index][0];
int cathode = leds[index][1];
pinMode(PB0, INPUT);
pinMode(PB1, INPUT);
pinMode(PB2, INPUT);
pinMode(PB4, INPUT);
pinMode(anode, OUTPUT);
pinMode(cathode, OUTPUT);
digitalWrite(anode, HIGH);
digitalWrite(cathode, LOW);
}
void setup() {
pinMode(PB3, INPUT_PULLUP);
}
int maxLed = 1;
void loop() {
if (digitalRead(PB3) == LOW) {
maxLed++;
if (maxLed > 8) {
maxLed = 1;
}
delay(200);
}
ledOn(8);
for (int i = 0; i < maxLed; i++) {
ledOn(i);
delayMicroseconds(50);
}
}