const int segments[] = {2, 3, 4, 5, 6, 7, 8, 9}; // 七段顯示器的 a~dot 接腳
const int digits[] = {10, 11, 12, 13}; // 顯示器的共陰極 COM1~COM4
// 定義數字對應的編碼 (共陰極)
const byte numbers[10] = {
0x3F, // 0 - 0111111
0x06, // 1 - 0000110
0x5B, // 2 - 1011011
0x4F, // 3 - 1001111
0x66, // 4 - 1100110
0x6D, // 5 - 1101101
0x7D, // 6 - 1111101
0x07, // 7 - 0000111
0x7F, // 8 - 1111111
0x6F // 9 - 1101111
};
const int displayDigits[4] = {1, 5, 8, 6}; // 要顯示的數字
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(segments[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digits[i], OUTPUT);
digitalWrite(digits[i], HIGH); // 初始化為高電平
}
}
// 顯示數字的函數
void displayNumber(int number, int position) {
for (int i = 0; i < 8; i++) {
digitalWrite(segments[i], (numbers[number] >> i) & 0x01 ? 0 : 1);
}
digitalWrite(digits[position], HIGH); // 選擇位置
delay(5); // 短暫延遲
digitalWrite(digits[position], LOW); // 關閉位置
}
void loop() {
for (int i = 0; i < 4; i++) {
displayNumber(displayDigits[i], i);
}
}