Scrivere con tastiera su LCD I2C

Ciao a tutti.
Come da titolo, avrei bisogno di una mano per questo mio nuovo progetto, che non riesco ad ultimare.
Non conosco il metodo con cui, tramite collegamento seriale, io possa scrivere su schermo LCD ciò che digito da tastiera. Ho scritto una piccola parte di codice che, come previsto, mi risultava errata. Lo lascio qui di seguito

#include <LCD.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //impostazione indirizzo del display e pin del display LCD

char tastiera = 0;

void setup() {
 lcd.begin(16,2); //Inizializzo schermo LCD I2C 16x2
 lcd.setCursor(0,3);
 lcd.print("Insert text:");
 Serial.begin(9600);

}

void loop() {
lcd.setCursor(1,0);

tastiera = Serial.read();

lcd.println(Serial.read); //dovrebbe stampare ciò che io digito da tastiera (?)
Serial.flush();
  }

lcd.print(tastiera);
ma devi anche verificare se ci sono dati nella seriale usando if e Serial.available()

ciao...

di sicuro a:

lcd.println(Serial.read);

mancano le () dopo .read...

sinceramente io metterei almeno un :

if(Serial.available(){})

Quell' if lo metto prima del
lcd.println(Serial.read()); ?

E poi, come dovrebbe strutturarsi il codice?

semplicemente:

if(Serial.available()){
    lcd.write(Serial.read());
}

...se c'è qualche cosa nella seriale...lo leggi...lo scrivi...

a te tutti i controlli di carattere di fine riga ed eccezioni varie...

Se usi la variabile tastiera:

if(Serial.available())
{ tastiera = Serial.read();
  lcd.print(tastiera);
}

Ovviamente così quello che scrivi va sempre su riga colonna 1/0 e quindi stampi sempre 1 carattere sopra l'altro visto che hai la lcd.setCursor(1,0);

Grazie ai vostri suggerimenti funziona, vi ringrazio! :slight_smile:

Mi chiedevo, e se io volessi visualizzare ciò che digito su tastiera contemporaneamente su LCD? E nel caso non dovesse esserci più spazio, come posso usare il tasto per cancellare ciò che ho scritto?

ciao,

non saprei come riconoscere cosa stai digitando da monitor seriale senza "dare" invio...potresti fare il contrario...creare una "tastiera" che colleghi direttamente ad arduino e che invia al monitor seriale cosa stai digitando...se devi cancellare un carattere puoi mandare un "a capo" e ristampare solo gli ultimi digit....per LCD...almeno quelli che ho provato io...a video hai 16 caratteri x 2 righe ...ma la singola riga è "formata" (forse meglio dire il suo buffer!?) da 40 caratteri...che puoi far scorrere...comunque ...semplicemente metti un counter che verifica quante digitazioni hai fatto...

EDIT: mi è venuto un dubbio...se il monitor seriale invia già subito i digit eseguiti...mamma mia che vuoto!

Non credo ci sia motivo di scaldarsi. Semplicemente non sapevo, quindi evitiamo inutili litigi. Cordiali saluti.

Non credo ci sia motivo di scaldarsi. Semplicemente non sapevo, quindi evitiamo inutili litigi. Cordiali saluti.

mi sono perso qualche cosa!?

Frarduino99:
Non credo ci sia motivo di scaldarsi. Semplicemente non sapevo, quindi evitiamo inutili litigi. Cordiali saluti.

Vorrei capire anche io di cosa stai parlando :o ... visto che non vedo alcun litigio o frasi irritanti ... ::slight_smile:

Guglielmo

ORSO2001:
EDIT: mi è venuto un dubbio...se il monitor seriale invia già subito i digit eseguiti...mamma mia che vuoto!

Forse @Frar99 ha interpretato male questa frase, come se "vuoto" fosse rivolto a luiù
Penso invece @orso si rivolgesse a se stesso

Quote from: ORSO2001 on Aug 30, 2017, 11:47 am

EDIT: mi è venuto un dubbio...se il monitor seriale invia già subito i digit eseguiti...mamma mia che vuoto!

Forse @Frar99 ha interpretato male questa frase, come se "vuoto" fosse rivolto a luiù
Penso invece @orso si rivolgesse a se stesso

si...mi riferivo a me...ero fuori casa e non potevo provare l'invio dati da monitor seriale ad arduino/lcd...@frarduino99: se ti sei offeso per questo ...scusa le parole poco chiare...nulla contro di te.

Fa nulla orso, forse avrò frainteso io. Fatto sta che comunque il mio intento iniziale sono riuscito a completarlo grazie al vostro aiuto. Detto ciò cordiali saluti! :slight_smile: