// 自己改 -> COM 個兩個Pin
#define DIGIT_1 5
#define DIGIT_2 18
// 自己改 -> 睇圖改
#define LED_A 15
#define LED_B 2
#define LED_C 0
#define LED_D 16
#define LED_E 4
#define LED_F 17
#define LED_G 19
const unsigned char Digits_Pin[] {
DIGIT_1, DIGIT_2
};
const unsigned char LEDs_Pin[] = {
LED_A, LED_B, LED_C, LED_D, LED_E, LED_F, LED_G
};
const unsigned char DIGIT_NUMBER[] = {
0x3F, 0x6, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x27, 0x7F, 0x6F
};
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(DIGIT_1, OUTPUT);
pinMode(DIGIT_2, OUTPUT);
for (int i = 0; i < 7; ++i)
pinMode(LEDs_Pin[i], OUTPUT);
digitalWrite(DIGIT_1, LOW);
digitalWrite(DIGIT_2, LOW);
}
void loop() {
for (int i = 0; i<100; i++) {
display_number(i);
delay(1);
}
}
void display_number(int num) {
int hex = num % 10;
int dec = (num % 100) / 10;
for(int i=0; i<100; i++) {
seg_output(1, hex);
seg_output(0, dec);
delay(5);
}
}
void seg_clear() {
for (int i = 0; i < 7; ++i)
digitalWrite(LEDs_Pin[i], LOW);
}
void seg_output(int d, int number) {
seg_clear();
digitalWrite(Digits_Pin[d], LOW);
for (int i = 0; i < 7; ++i) {
digitalWrite(LEDs_Pin[i], (DIGIT_NUMBER[number] >> i) & 1);
}
delayMicroseconds(1000);
digitalWrite(Digits_Pin[d], HIGH);
}