#include #include #define LED_1 13 // LED pins #define LED_2 12 #define LED_3 11 #define LED_4 10 #define BUZ 3 // The speaker enable #define POT A0 // The analog input for the potentiometer #define S_1 A1 // The input pushbuttons #define S_2 A2 #define S_3 A3 #define D_LATCH 4 // The 3 pins that control the display #define D_CLK 7 #define D_DATA 8 DS3231 rtc; RTCDateTime dt; const byte numMap[] = {0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01, 0x09, 0x11, 0xC1, 0x63, 0x85, 0x61, 0x71, 0xFF}; const byte digitMap[] = {0x00, 0x80, 0x40, 0x20, 0x10}; int dig1, dig2, dig3, dig4; void dispNum(int digitNum, int Value) { digitalWrite(D_LATCH, LOW); shiftOut(D_DATA, D_CLK, LSBFIRST, numMap[Value]); shiftOut(D_DATA, D_CLK, LSBFIRST, digitMap[digitNum] ); digitalWrite(D_LATCH, HIGH); } void setup() { //Leds pinMode(LED_1, OUTPUT); digitalWrite(LED_1, HIGH); pinMode(LED_2, OUTPUT); digitalWrite(LED_2, HIGH); pinMode(LED_3, OUTPUT); digitalWrite(LED_3, HIGH); pinMode(LED_4, OUTPUT); digitalWrite(LED_4, HIGH); //Drukknoppen pinMode(S_1, INPUT); pinMode(S_2, INPUT); pinMode(S_3, INPUT); //Buzzer pinMode(BUZ, OUTPUT); digitalWrite(BUZ, HIGH); //Display pinMode(D_LATCH , OUTPUT); pinMode(D_CLK , OUTPUT); pinMode(D_DATA , OUTPUT); dispNum(1, 16); dispNum(2, 16); dispNum(3, 16); dispNum(4, 16); dispNum(0, 16); Wire.begin(); rtc.begin(); } void loop() { dt = rtc.getDateTime(); int year, month, day, hour, minute,second; if(!digitalRead(S_1)) { dig1 = dt.month / 10; dispNum(1 , dig1); dig2 = dt.month - (dig1 * 10); dispNum(2 , dig2); dig3 = dt.day / 10; dispNum(3 , dig3); dig4 = dt.day - (dig3 * 10); dispNum(4 , dig4); } else if(!digitalRead(S_2)) { dig1 = 16; dispNum(1 , dig1); dig2 = 16; dispNum(2 , dig2); dig3 = dt.second / 10; dispNum(3 , dig3); dig4 = dt.second - (dig3 * 10); dispNum(4 , dig4); } else { dig1 = dt.hour / 10; dispNum(1 , dig1); dig2 = dt.hour - (dig1 * 10); dispNum(2 , dig2); dig3 = dt.minute / 10; dispNum(3 , dig3); dig4 = dt.minute - (dig3 * 10); dispNum(4 , dig4); } }