5 pinMode(LEDS_GRN, OUTPUT);
6 pinMode(LEDS_RED, OUTPUT);
10 pinMode(LED4, OUTPUT);
14 * Tasks for the LEDs. Needs to be called every few ms(?) for multiplexing.
15 * When an LED is blinking and in the off period, it is necessary to call
16 * digitalWrite() twice and set the cathode. This ensures that the function
17 * takes equally long to return on every iteration, s.t. the blinking duty
18 * cycle is exactly 50% and LEDs blink equally bright, regardless of the status
24 switch (leds.counter & 0x03) {
26 digitalWrite(LED4, 1);
27 if ((leds.a & LED_BLINK) && leds.counter & 0x4000) {
28 digitalWrite(LEDS_GRN, 0);
29 digitalWrite(LEDS_RED, 0);
31 digitalWrite(LEDS_GRN, leds.a & 1);
32 digitalWrite(LEDS_RED, leds.a & 2);
34 digitalWrite(LED1, 0);
37 digitalWrite(LED1, 1);
38 if ((leds.b & LED_BLINK) && leds.counter & 0x4000) {
39 digitalWrite(LEDS_GRN, 0);
40 digitalWrite(LEDS_RED, 0);
42 digitalWrite(LEDS_GRN, leds.b & 1);
43 digitalWrite(LEDS_RED, leds.b & 2);
45 digitalWrite(LED2, 0);
48 digitalWrite(LED2, 1);
49 if ((leds.c & LED_BLINK) && leds.counter & 0x4000) {
50 digitalWrite(LEDS_GRN, 0);
51 digitalWrite(LEDS_RED, 0);
53 digitalWrite(LEDS_GRN, leds.c & 1);
54 digitalWrite(LEDS_RED, leds.c & 2);
56 digitalWrite(LED3, 0);
59 digitalWrite(LED3, 1);
60 if ((leds.d & LED_BLINK) && leds.counter & 0x4000) {
61 digitalWrite(LEDS_GRN, 0);
62 digitalWrite(LEDS_RED, 0);
64 digitalWrite(LEDS_GRN, leds.d & 1);
65 digitalWrite(LEDS_RED, leds.d & 2);
67 digitalWrite(LED4, 0);