/*
  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);
  }
}
ATTINY8520PU