Salve a tutti, ho trovato un semplice programma che con un modulo Ds3231RTC misuro l'ora, la data e visualizziamo il tutto su uno schermo lcd 16x2. Il programma fa visualizzare sulla prima riga dello schermo l'ora e sulla seconda la data.
La mia domanda é: si potrebbe fare in modo che sia l'ora sia la data vengano scritte e visualizzate sulla prima riga del display alternandosi ogni 5 secondi?
Codice:
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
rtc.begin(); // Initialize the rtc object
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
lcd.setCursor(0,0);
lcd.print("Ora: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Data: ");
lcd.print(rtc.getDateStr());
delay(1000);
}
Prima di tutto, essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...
... poi, in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).
Per cambiare ogni volta il dato da visualizzare su di un linea del display basta semplicemente:
-scrivere il primo dato da visualizzare seguito dal tempo che vogliamo che rimanga sullo schermo
-inserire una riga senza niente (spazi)
-inserire il secondo dato che vogliamo visualizzare (sempre sulla stessa riga del display) seguito dal tempo che vogliamo che rimanga sullo schermo
-azzerare di nuovo la riga con gli spazi
codice completo:
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
rtc.begin(); // Initialize the rtc object
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
lcd.setCursor(0,0); //imposto su che riga scrivere (prima)
lcd.print("Ora : ");
lcd.print(rtc.getTimeStr());
delay(5000); //tempo di visualizzazione dell'ora
lcd.setCursor(0,0);
lcd.print(" "); //azzero la prima riga del display
lcd.setCursor(0,0);
lcd.print("Data: ");
lcd.print(rtc.getDateStr());
delay(3000); //tempo di visualizzazione della data
lcd.setCursor(0,0);
lcd.print(" ");
}