// ------- ตัวแปร ------------------------------------
int index_LED = 0;
int index_segment = 0;
int time = 1000;
const int LED[] = {10, 11, 12};
const byte segmentCodes[] = {
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b00110000, // 3
0b00011001, // 4
0b00010010, // 5
0b00000010, // 6
0b11111000, // 7
0b00000000, // 8
0b00010000, // 9
0b00001000, // A
0b00000011, // B
0b01000110, // C
0b00100001, // D
0b00000110, // E
0b10001110}; // F
// กำหนดขาที่ต่อกับหลอด LED 7-Segment ในฐาน 16 (A, B, C, D, E, F, G)
void setup() {
pinMode(2,OUTPUT);//a
pinMode(3,OUTPUT);//b
pinMode(4,OUTPUT);//c
pinMode(5,OUTPUT);//d
pinMode(6,OUTPUT);//e
pinMode(7,OUTPUT);//f
pinMode(8,OUTPUT);//g
pinMode(9,OUTPUT);//poirt
}
// ------------ ควบคุมไฟ segment --------------------------
void displayDigit(byte value) {
digitalWrite(2, bitRead(value, 0));
digitalWrite(3, bitRead(value, 1));
digitalWrite(4, bitRead(value, 2));
digitalWrite(5, bitRead(value, 3));
digitalWrite(6, bitRead(value, 4));
digitalWrite(7, bitRead(value, 5));
digitalWrite(8, bitRead(value, 6));
}
// ------- การเปิด-ปิด -------------------------------------
void turnOnLED(int index_LED) {
digitalWrite(LED[index_LED], HIGH);
}
void turnOffLED(int index_LED) {
digitalWrite(LED[index_LED], LOW); // ปิด LED สีที่ต้องการ
}
// ------- จัดการรลำดับไฟ LED ------------------------------
void LED_Controller(int index_LED) {
if (index_LED == 0) {
turnOffLED(2);
}
else {
turnOffLED(index_LED-1);
}
turnOnLED(index_LED);
delay(time);
}
// ------- ตัวจัดการ segment กับการเปิด-เปิด LED ---------------
void Segment_Controller (int index_LED) {
displayDigit(segmentCodes[index_segment]);
LED_Controller(index_LED);
index_segment += 1;
if (index_segment == 16) {
index_segment = 0;
}
}
// ------- Loop -------------------------------------------
void loop() {
if (index_LED == 3) {
index_LED = 0;
}
Segment_Controller(index_LED);
index_LED += 1;
}