Last active
March 13, 2026 00:10
-
-
Save maliqq/80791c5079f1d926ef1311b0f4316b2c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // A B C D E F G DP | |
| // 6 5 2 3 4 7 8 9 | |
| int pins[] = {6, 5, 2, 3, 4, 7, 8, 9}; | |
| char segments[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'D','P'}; | |
| const int NUM_PINS = 8; | |
| void setup() { | |
| for (int i = 0; i < NUM_PINS; i++) { | |
| pinMode(pins[i], OUTPUT); | |
| } | |
| } | |
| const char* renderDigit(int digit) { | |
| switch (digit) { | |
| case 0: return "ABCDEF"; | |
| case 1: return "BC"; | |
| case 2: return "ABGED"; | |
| case 3: return "ABGCD"; | |
| case 4: return "FGBC"; | |
| case 5: return "AFGCD"; | |
| case 6: return "AFEDCG"; | |
| case 7: return "ABC"; | |
| case 8: return "ABCDEFG"; | |
| case 9: return "GFABCD"; | |
| default: return ""; | |
| } | |
| } | |
| // Given a segment letter, return its pin number | |
| int segmentToPin(char seg) { | |
| // A=6, B=5, C=2, D=3, E=4, F=7, G=8, DP=9 | |
| switch (seg) { | |
| case 'A': return 6; | |
| case 'B': return 5; | |
| case 'C': return 2; | |
| case 'D': return 3; | |
| case 'E': return 4; | |
| case 'F': return 7; | |
| case 'G': return 8; | |
| default: return -1; | |
| } | |
| } | |
| void clearDisplay() { | |
| for (int i = 0; i < NUM_PINS; i++) { | |
| digitalWrite(pins[i], LOW); | |
| } | |
| } | |
| void loop() { | |
| // Countdown from 9 to 0 | |
| for (int digit = 9; digit >= 0; digit--) { | |
| clearDisplay(); | |
| const char* schema = renderDigit(digit); | |
| // Turn on only the segments for this digit | |
| for (int j = 0; schema[j] != '\0'; j++) { | |
| int pin = segmentToPin(schema[j]); | |
| if (pin >= 0) { | |
| digitalWrite(pin, HIGH); | |
| } | |
| } | |
| delay(1000); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment