/*
Mission: setup 7segment x4digit (Code c++)
ShowNumer 0000 to 9999
*/
int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
const int segments[] = {2, 3, 4, 5, 6, 7, 8}; // ขาของ 7-segments display
const int digitPins[] = {10, 11, 12, 13 }; // ขาควบคุมหลัก
const byte numberSegments[10] = {
//0bGFEDCBA เริ่มต้นค่านับจากซ้ายตัวที่3(หลังbพิมเล็ก)เรียงลำดับดังนี้ 0b_G F E D C B A
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b1110110, // 4
0b1101001, // 5
0b1111101, // 6
0b0000111, // 7
0b1111111, // 8
0b1111011, // 9
};
const int Num[10] ={0,1,2,3,4,5,6,7,8,9};
void setup(){
//pinMode(segments, OUTPUT);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
//pinMode(DP, OUTPUT);
}
void showNumber(int number) {
// แปลงเลขจำนวนเต็ม 4 หลัก เป็นเลขหลักหน่วย หลักสิบ หลักร้อย และหลักพัน
int thousands = number / 1000;
int hundreds = (number % 1000) / 100;
int tens = (number % 100) / 10;
int ones = number % 10;
for (int digit = 0; digit < 4; digit++) {
// เลือกหลักที่ต้องการแสดงผล
digitalWrite(digitPins[digit], LOW);
// แสดงตัวเลข
int value = 0;
switch (digit) {
case 0: value = thousands; break;
case 1: value = hundreds; break;
case 2: value = tens; break;
case 3: value = ones; break;
}
for (int segment = 0; segment < 7; segment++) {
digitalWrite(segments[segment], bitRead(numberSegments[byte(value)], segment));
}
// ปิดหลักปัจจุบัน
digitalWrite(digitPins[digit], !HIGH);
// Delay สั้นๆ เพื่อให้เห็นตัวเลขชัดเจน
delayMicroseconds(500);
}
}
void loop() {
for (int i = 0; i <= 9999; i++) {
showNumber(i);
};
delay(500);
}