// hobbyprojects // 27-05-2020 POV_Clock_using_single_7_Segment_LED_Display.ino int sensorPin = 12; int hours = 12; int minutes = 45; int seconds = 00; int val,number; unsigned long previousTime = 0; const PROGMEM unsigned char num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void setup() { DDRD = 0xFF; PORTD = 0x00; pinMode(sensorPin,INPUT_PULLUP); } void loop() { val = digitalRead(sensorPin); while (val == LOW) { update_time(); val = digitalRead(sensorPin); } number=hours/10; Display(); number=hours%10; Display(); delay(2); number=minutes/10; Display(); number=minutes%10; Display(); delay(2); number=seconds/10; Display(); number=seconds%10; Display(); val = digitalRead(sensorPin); while (val == HIGH) { update_time(); val = digitalRead(sensorPin); } } void Display() { PORTD = (pgm_read_byte(&(num)[number])); delay(1); PORTD = 0x00; delay(8); } void update_time() { if (millis() >= (previousTime)) { previousTime = previousTime + 1000; seconds = seconds+1; if (seconds == 60) { seconds = 0; minutes = minutes+1; } if (minutes == 60) { minutes = 0; hours = hours+1; } if (hours == 24) { hours = 0; } } }