void setup() {
Serial.begin(115200);
Serial.println("Start Firmware...");
pinMode(17, OUTPUT); // A
pinMode(5, OUTPUT); // B
pinMode(18, OUTPUT); // C
pinMode(19, OUTPUT); // D
pinMode(21, OUTPUT); // E
pinMode(22, OUTPUT); // G
pinMode(23, OUTPUT); // F
pinMode(16, INPUT_PULLUP); // Switch
}
long currentTime = 0;
long LastSaveTime = 0;
bool toggle7segment = true;
int hexIndex = 0;
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
void loop() {
currentTime = millis();
// 500ms loop
if (currentTime - LastSaveTime >= 500) {
LastSaveTime = currentTime;
if (digitalRead(16) == HIGH) {
// แสดงเลข 0 กระพริบ
showSevenSegment('0', toggle7segment);
} else {
// แสดงเลข 1-9 และ A-F กระพริบ
showSevenSegment(hexDigits[hexIndex], toggle7segment);
if (!toggle7segment) {
hexIndex = (hexIndex + 1) % 16; // เปลี่ยนเป็นตัวถัดไปในอาเรย์เมื่อดับ
}
}
toggle7segment = !toggle7segment;
}
}
void showSevenSegment(char digit, bool status) {
if (!status) {
// ดับ 7-segment
digitalWrite(17, LOW);
digitalWrite(5, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(22, LOW);
digitalWrite(23, LOW);
return;
}
if (digit == '0') {
digitalWrite(17, HIGH); // A
digitalWrite(5, HIGH); // B
digitalWrite(18, HIGH); // C
digitalWrite(19, HIGH); // D
digitalWrite(21, HIGH); // E
digitalWrite(22, LOW); // G
digitalWrite(23, HIGH); // F
} else if (digit == '1') {
digitalWrite(17, LOW);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(22, LOW);
digitalWrite(23, LOW);
} else if (digit == '2') {
digitalWrite(17, HIGH);
digitalWrite(5, HIGH);
digitalWrite(18, LOW);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, LOW);
} else if (digit == '3') {
digitalWrite(17, HIGH);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, LOW);
digitalWrite(22, HIGH);
digitalWrite(23, LOW);
} else if (digit == '4') {
digitalWrite(17, LOW);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == '5') {
digitalWrite(17, HIGH);
digitalWrite(5, LOW);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, LOW);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == '6') {
digitalWrite(17, HIGH);
digitalWrite(5, LOW);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == '7') {
digitalWrite(17, HIGH);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(22, LOW);
digitalWrite(23, LOW);
} else if (digit == '8') {
digitalWrite(17, HIGH);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == '9') {
digitalWrite(17, HIGH);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, LOW);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == 'A') {
digitalWrite(17, HIGH);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, LOW);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == 'B') {
digitalWrite(17, LOW);
digitalWrite(5, LOW);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == 'C') {
digitalWrite(17, HIGH);
digitalWrite(5, LOW);
digitalWrite(18, LOW);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, LOW);
digitalWrite(23, HIGH);
} else if (digit == 'D') {
digitalWrite(17, LOW);
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, LOW);
} else if (digit == 'E') {
digitalWrite(17, HIGH);
digitalWrite(5, LOW);
digitalWrite(18, LOW);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
} else if (digit == 'F') {
digitalWrite(17, HIGH);
digitalWrite(5, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
}
}