// Segment pins: a-g
const int segPins[7] = {4, 5, 6, 7, 8, 9, 10}; // a to g
// Digit control pins
const int digit3 = 13; // หลักสิบ
const int digit4 = 1; // หลักหน่วย
// Switch pins
const int switchPins[10] = {A0, A1, A2, A3, A4, A5, 2, 3, 11, 12};
int currentNum = 0;
// 7-segment patterns (0-9): a-g (1 = ON)
const byte numbers[10][7] = {
{0,0,0,0,0,0,1}, // 0
{1,0,0,1,1,1,1}, // 1
{0,0,1,0,0,1,0}, // 2
{0,0,0,0,1,1,0}, // 3
{1,0,0,1,1,0,0}, // 4
{0,1,0,0,1,0,0}, // 5
{0,1,0,0,0,0,0}, // 6
{0,0,0,1,1,1,1}, // 7
{0,0,0,0,0,0,0}, // 8
{0,0,0,0,1,0,0} // 9
};
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
for (int i = 0; i < 10; i++) {
pinMode(switchPins[i], INPUT_PULLUP);
}
}
void loop() {
// Check each switch
for (int i = 0; i < 10; i++) {
if (digitalRead(switchPins[i]) == LOW) {
currentNum = i + 1;
break;
}
}
displayNumber(currentNum);
}
// Display 2-digit number using digit3 and digit4
void displayNumber(int num) {
int tens = num / 10;
int ones = num % 10;
// Show tens
digitalWrite(digit4, LOW);
showDigit(tens);
digitalWrite(digit3, HIGH);
delay(5);
digitalWrite(digit3, LOW);
// Show ones
showDigit(ones);
digitalWrite(digit4, HIGH);
delay(5);
digitalWrite(digit4, LOW);
}
// Activate segments to show digit (0–9)
void showDigit(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], numbers[num][i]);
}
}