Skip to content

Instantly share code, notes, and snippets.

@maliqq
Last active March 13, 2026 00:10
Show Gist options
  • Select an option

  • Save maliqq/80791c5079f1d926ef1311b0f4316b2c to your computer and use it in GitHub Desktop.

Select an option

Save maliqq/80791c5079f1d926ef1311b0f4316b2c to your computer and use it in GitHub Desktop.
// 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