#include <Wire.h>
#include <RTClib.h>
#include<LiquidCrystal_I2C.h>
#include<Keypad.h>
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27,16,2);
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS]={
{'1','2','3','U'},
{'4','5','6','D'},
{'7','8','9','L'},
{'#','0','*','R'}
};
char keypressed;
byte rowPins[ROWS]={5,4,3,2};
byte colPins[COLS]={9,8,7,6};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins,ROWS,COLS);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(2023,1,11,15,30,45));
lcd.init();
lcd.backlight();
while(1)
{
SetTime();
}
}
void loop() {
// put your main code here, to run repeatedly:
DateTime now=RTC.now();
lcd.setCursor(3,0);
displayData(now.year());
lcd.print('-');
displayData(now.month());
lcd.print('-');
displayData(now.day());
lcd.setCursor(4,1);
displayData(now.hour());
lcd.print(':');
displayData(now.minute());
lcd.print(':');
displayData(now.second());
}
void displayData(u32 data)
{
if(data<10)
{
lcd.print(0);
lcd.print(data);
}
else
lcd.print(data);
}
void SetTime()
{
lcd.setCursor(3,0);
lcd.print("____-__-__");
lcd.setCursor(3,1);
lcd.print("____:__:__");
//
while(1)
{
changesite(2,0);
//CursorTwink(3,0);
//changesite(3,0);
}
}
void CursorTwink(uint8_t col,uint8_t row)
{
lcd.setCursor(col,row);
lcd.print(' ');
delay(100);
lcd.setCursor(col,row);
lcd.print('_');
delay(100);
}
void changesite(uint8_t col,uint8_t row)
{
keypressed = keypad.getKey();
//if (keypressed == 'U')
//{
//row=row-1;
//CursorTwink(col,row);
//}
//else if (keypressed == 'D')
//{
//row=row+1;
//CursorTwink(col,row);
//}
//else
//CursorTwink(col,row);
switch (keypressed)
{
case 'U':row=row-1;CursorTwink(col,row);
case 'D':row=row+1;CursorTwink(col,row);
case 0 :CursorTwink(col,row);
}
}
//char key=keypad.getKey();
//switch(keypad.getKey())
//case D: row=row+1;break;
//case U: row=row-1;break;