/* Dette array med 10 tal plus 'clear display' viser status for de segmenter, der skal vise det givne tal. Dette bruges til at simplificere koden senere - vi kan indeksere arrayet for at vise det rigtige tal. */ const bool TAL [11][7] {{1,1,1,1,1,1,0}, // nul {0,1,1,0,0,0,0}, // et {1,1,0,1,1,0,1}, // to {1,1,1,1,0,0,1}, // tre {0,1,1,0,0,1,1}, // fire {1,0,1,1,0,1,1}, // fem {1,0,1,1,1,1,1}, // seks {1,1,1,0,0,0,0}, // syv {1,1,1,1,1,1,1}, // otte {1,1,1,0,0,1,1}, // ni {0,0,0,0,0,0,0}};// Clear display const int CLEAR_DISPLAY {10}; const int BIT1 {14}; const int BIT2 {15}; const int BIT3 {16}; const int KNAP1 {17}; const int KNAP2 {18}; const int KNAP3 {19}; bool bit[3] {0, 0, 0}; void setup() { for (int i = 2; i <= 16; i++) pinMode(i, OUTPUT); for (int i = 17; i <= 19; i++) pinMode(i, INPUT_PULLUP); for (int i = BIT1; i <= BIT3; i++) { digitalWrite(i, LOW); bit[i - 14] = 0; } } // denne funktion goer det aktuelle arbejde med 7-segmentes pins. void displayTal(int talTilVisning) { int pin {2}; for (int segment = 0; segment <= 6; segment++) { digitalWrite(pin, TAL[talTilVisning][segment]); pin++; } } void loop() { for (int i = KNAP1; i <= KNAP3; i++) { if (!digitalRead(i)) bit[i - 17] = !bit[i - 17]; digitalWrite(i - 3, bit[i - 17]); delay(100); } int tal = bit[2]*4 + bit[1]*2 + bit[0]; displayTal(tal); }