Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //LCD 16x2 PCF8574AT + RTC Tiny I2C V 1.3 set 2018 / Versione IDE 1.6.0
- //Cerani Marco Tolentino Cotesta
- #include <Wire.h>
- #include <RTClib.h>
- RTC_DS1307 RTC;
- #include <LiquidCrystal_I2C.h>
- #define DS1307_I2C_ADDRESS 0x68
- LiquidCrystal_I2C lcd(0x3F,16,2);
- char daysOfTheWeek[7][10] = {"Do", "Lu", "Ma", "Me", "Gio", "Ve", "Sa"};
- char bufferRX[50];
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Per aggiornare data e ora inviare il seguente comando: ");
- Serial.println("\"setDateTime anno, mese, giorno, ora, minuti, secondi\"");
- Serial.println("17:30 del 8 sett 2018");
- Serial.println("Esempio: setDateTime, 2018, 9, 8, 17, 30, 00");
- lcd.init();
- lcd.backlight();
- }
- void loop()
- {
- static unsigned long updateTime;
- if(millis() - updateTime > 1000){
- updateTime = millis();
- DateTime now = RTC.now();
- lcd.clear();
- lcd.setCursor(0, 0);
- LCDPrintNum(now.hour());
- lcd.print(":");
- LCDPrintNum(now.minute());
- lcd.print(":");
- LCDPrintNum(now.second());
- lcd.print(" ");
- lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
- lcd.setCursor(0, 1);
- LCDPrintNum(now.day());
- lcd.print("/");
- LCDPrintNum(now.month());
- lcd.print("/");
- lcd.print(now.year(), DEC);
- }
- readSerial();
- }
- void LCDPrintNum(int num){
- if(num <10)
- lcd.print("0");
- lcd.print(num);
- }
- void readSerial(){
- while (Serial.available() > 0) {
- Serial.readBytesUntil('\n', bufferRX, sizeof(bufferRX) - 1);
- if(strstr(bufferRX, "setDateTime,")){
- int tdArray[6];
- char * pch = strtok (bufferRX, " ,");
- unsigned int i = 0;
- while (pch != NULL){
- if(i > 0)
- tdArray[i-1] = atoi(pch);
- pch = strtok (NULL, " ,");
- i++;
- }
- DateTime newTime = DateTime(tdArray[0], tdArray[1], tdArray[2], tdArray[3], tdArray[4], tdArray[5]);
- RTC.adjust(newTime);
- Serial.println("Impostato nuovo orario.");
- }
- }
- }
RAW Paste Data