Ho un problema con l'lcd 16*2 non so se si puo fare nel primo rigo fare una scritta scorrevole gia fatta e nella seconda segnare la temperatura
Ho provato ma scorre tutte e 2 le righe e la temperatura come giusto che sia si aggiornava dopo che terminava il giro.GRAZIE IN ANTICIPO
codice grazie
ciao...si può fare...all'epoca mi ero fatto una funzione per aggiornare una riga (scrolling text)...sdoppiando la funzione puoi avere uno scrolling asincrono...tipo:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f, 16, 2);
char p1[] = "fatti non foste a viver come bruti ma per seguir virtute e conoscenza";
char p2[] = "We all live in a yellow submarine...";
boolean nuovaP = true;
unsigned long myMillis;
unsigned long myMillis2;
void setup() {
lcd.begin();
lcd.setCursor(0, 0);
myMillis = millis();
myMillis2 = millis();
aggiornaLCD_0(p1, 16 , nuovaP);
aggiornaLCD_1(p2, 16 , nuovaP);
nuovaP = false;
}
void loop() {
if (millis() - myMillis >= 500) {
aggiornaLCD_0(p1, 16 , nuovaP);
myMillis = millis();
}
if (millis() - myMillis2 >= 900) {
aggiornaLCD_1(p2, 16 , nuovaP);
myMillis2 = millis();
}
}
/* *stringa = stringa da far scorrere su LCD
L_LCD = numero colonne LCD
stringaNew = se è una nuova stringa per reset conteggio posizione
*/
void aggiornaLCD_0(char *stringa, byte L_LCD, boolean stringaNew) {
static int pos = 0;
if (stringaNew) {
pos = 0;
}
char z[L_LCD + 1];
for (byte i = 0; i <= L_LCD; i++) {
z [i] = *(stringa + (i + pos));
}
lcd.setCursor(0, 0);
lcd.print(z);
pos++;
if (pos >= (strlen(stringa) - L_LCD)+1) {
pos = 0;
}
}
void aggiornaLCD_1(char *stringa, byte L_LCD, boolean stringaNew) {
static int pos = 0;
if (stringaNew) {
pos = 0;
}
char z[L_LCD + 1];
for (byte i = 0; i <= L_LCD; i++) {
z [i] = *(stringa + (i + pos));
}
lcd.setCursor(0, 1);
lcd.print(z);
pos++;
if (pos >= (strlen(stringa) - L_LCD)+1) {
pos = 0;
}
}