// Segment A-G → Pin 0–6, DP = 7
int segA = 0, segB = 1, segC = 2, segD = 3, segE = 4, segF = 5, segG = 6;
int segDP = 7;
// Digit select D1–D4 → Pin 8–11
int d1 = 8, d2 = 9, d3 = 10, d4 = 11;
void setup() {
for (int i = 0; i <= 7; i++) pinMode(i, OUTPUT);
for (int i = 8; i <= 11; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW); // ปิดหลักทั้งหมด (Common Anode → LOW = ปิด)
}
}
void clearSegments() {
for (int i = 0; i <= 6; i++) digitalWrite(i, HIGH); // ปิด segment (Common Anode → HIGH = ปิด)
}
void showDigit(int num) {
clearSegments(); // เคลียร์ก่อน
if (num == 0) { digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); }
if (num == 1) { digitalWrite(segB, LOW); digitalWrite(segC, LOW); }
if (num == 2) { digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segG, LOW); digitalWrite(segE, LOW); digitalWrite(segD, LOW); }
if (num == 3) { digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segG, LOW); }
if (num == 4) { digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); }
if (num == 5) { digitalWrite(segA, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); }
if (num == 6) { digitalWrite(segA, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); }
if (num == 7) { digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segC, LOW); }
if (num == 8) { for (int i = 0; i <= 6; i++) digitalWrite(i, LOW); }
if (num == 9) { digitalWrite(segA, LOW); digitalWrite(segB, LOW); digitalWrite(segC, LOW); digitalWrite(segD, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); }
}
void loop() {
for (int n = 9; n >= 0; n--) {
for (int i = 0; i < 100; i++) { // แสดงแต่ละเลขประมาณ 1 วินาที
digitalWrite(d1, HIGH); showDigit(n); delay(2); digitalWrite(d1, LOW);
digitalWrite(d2, HIGH); showDigit(n); delay(2); digitalWrite(d2, LOW);
digitalWrite(d3, HIGH); showDigit(n); delay(2); digitalWrite(d3, LOW);
digitalWrite(d4, HIGH); showDigit(n); delay(2); digitalWrite(d4, LOW);
}
delay(1000); // หน่วงอีกนิด (รวมเวลาประมาณ 2 วินาทีต่อเลข)
}
}