unsigned long startTime = 0;
int buttonPressCount = 0;
int format = 0;
int Bootter = 0;
const byte segmentCodes[] = {
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
0b11111000, // 7
0b10000000, // 8
0b10010000 // 9
};
void setup() {
DDRB = 0b111111;
DDRC = 0b011100;
DDRD |= 0b11111111;
}
void displayDigit(int digit) {
PORTD = segmentCodes[digit];
}
void displayTime(unsigned long time) {
int thousands = time / 10000;
int hundreds = (time / 1000) % 10;
int tens = (time / 100) % 10;
int ones = time % 10;
displayDigit(thousands);
PORTB |= 0b000001;
delay(5);
PORTB ^= 0b000001;
displayDigit(hundreds);
PORTB |= 0b000010;
PORTD = 0b01111111;
delay(5);
PORTB ^= 0b000010;
displayDigit(tens);
PORTB |= 0b000100;
delay(5);
PORTB ^= 0b000100;
displayDigit(ones);
PORTB |= 0b001000;
delay(5);
PORTB ^= 0b001000;
}
void displayTime1(unsigned long time) {
int thousands = time / 10000;
int hundreds = (time / 1000) % 10;
int tens = (time / 100) % 10;
int ones = time % 10;
displayDigit(thousands);
PORTB |= 0b010000;
delay(5);
PORTB ^= 0b010000;
displayDigit(hundreds);
PORTB |= 0b100000;
PORTD = 0b01111111;
delay(5);
PORTB ^= 0b100000;
displayDigit(tens);
PORTC |= 0b001000;
delay(5);
PORTC ^= 0b001000;
displayDigit(ones);
PORTC |= 0b010000;
delay(5);
PORTC ^= 0b010000;
}
void FX1() {
//FX();
if (startTime == 0) {
startTime = millis(); // เริ่มต้นนับเวลา
} //
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - startTime;
displayTime(elapsedTime);
if (digitalRead(PINC & 0b111101)) {
if ((PINC & 0b111101) == 0) {
buttonPressCount++; // เพิ่มจำนวนการกดปุ่มเมื่อปุ่ม 0 ถูกกด
delay(200);
while (true) {
displayTime(elapsedTime);
format = elapsedTime;
// if ((PINC & 0b111101) == 0) {
return;
// }
}
}
}
}
void FX() {
if (startTime == 0) {
startTime = millis(); // เริ่มต้นนับเวลา
}
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - startTime;
displayTime1(elapsedTime);
if (digitalRead(PINC & 0b111101)) {
if ((PINC & 0b111101) == 0) {
buttonPressCount++; // เพิ่มจำนวนการกดปุ่มเมื่อปุ่ม 0 ถูกกด
Bootter++;
delay(200);
while (true) {
displayTime1(elapsedTime);
displayTime(format);
//startTime = elapsedTime ;
//FX();
if ((PINC & 0b111110) == 0) {
return;
}
}
}
}
}
void loop() {
int vol = digitalRead(PINC & 0b1111110);
if (vol == HIGH) {
for (int i = 3; i >= 0; i--) {
displayTime1(i);
displayTime(i);
delay(1000); // รอเวลา 1 วินาที
}
buttonPressCount = 0;
while (true) {
FX1();
if (buttonPressCount >= 1) {
while (true) {
FX();
displayTime(format);
//startTime = 0;
if (Bootter >= 1) {
startTime = 0;
Bootter = 0;
return;
}
}
}
}
} else {
PIND ^= 0b00000001;
}
delay(200);
}