#include #include #include #include #include #include #include DS3231 rtc(SDA, SCL); Time t; #define buz 7 #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10 #define OLED_RESET 8 Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); int Hor, Min, Sec, tim, dat, h, m, s; int ASCII = 48; char key = 0; char buffer[2]; const byte numRows= 4; const byte numCols= 4; char keymap[numRows][numCols]= { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[numRows] = {A0, A1, A2, A3}; byte colPins[numCols]= {6, 5, 4, 3}; Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols); void setup() { Wire.begin(); rtc.begin(); pinMode(buz, OUTPUT); display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); welcome(); //uncomment these lines to set the date and time //rtc.setDOW(SATURDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(10, 54, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(7, 1, 2017); // Day, Month, Year } void loop() { t = rtc.getTime(); Hor = t.hour; Min = t.min; Sec = t.sec; tim = rtc.getTimeStr(); dat = rtc.getDateStr(); char key = myKeypad.getKey(); if (key == 'C'){ digitalWrite(buz, LOW); EEPROM.write(2, ASCII+6); EEPROM.write(3, ASCII); } if(key == '#'){ display.clearDisplay(); display.setCursor(0,0); display.print("Enter New Time"); display.setCursor(0,10); display.display(); int j =0; int i=0; while( j<6) { if(i==2 || i == 5){ display.print(":"); display.display(); i++; } key=myKeypad.getKey(); if(key) { display.print(key); display.display(); EEPROM.write(j,key); j++; i++; } } } changealarm(); checkalarm(); timedate(); } void checkalarm(){ if( Hor == h && Min == m) { delay(200); display.clearDisplay(); display.setCursor(0,10); display.print("Hold C to stop Alarm"); display.display(); digitalWrite(buz, HIGH); delay(200); } } void changealarm(){ buffer[0]=EEPROM.read(0); buffer[1]=EEPROM.read(1); h = atoi(buffer); buffer[0]=EEPROM.read(2); buffer[1]=EEPROM.read(3); m = atoi(buffer); buffer[0]=EEPROM.read(4); buffer[1]=EEPROM.read(5); s = atoi(buffer); } void timedate(){ display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(0,0); display.print("Time: "); display.print(rtc.getTimeStr()); display.setCursor(0,10); display.print("Date: "); display.print(rtc.getDateStr()); display.setCursor(0,20); display.print("Alarm: "); display.print(h); display.print("."); display.print(m); display.print("."); display.print(s); display.display(); } void welcome(){ display.setCursor(0,0); display.print(" Welcome "); display.display(); display.setCursor(0,10); display.print(" To "); display.display(); display.setCursor(0,20); display.print("ElectronicsHobbyists "); display.display(); delay(5000); }