Ho inserito alla fine un "lcd.clear()" che mi cancella tutte e due le righe prima di scrivere i nuovi caratteri, ma sarebbe più comodo e logico che venga cancellata solo la riga corrente.
Saverio.
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 13, 8, 9, 10, 11);
char rx; // il valore letto
int num = 0; // numero di caratteri scritti nella riga
int riga = 0; // numero righe scritte
#define COLONNE 16
#define RIGHE 2
void setup()
{
DDRD = (INPUT); // configura la porta D come ingresso
pinMode(A4, OUTPUT); // pin busy - Pin analogico
pinMode(A5, INPUT); // pin strobe - Pin analogico
lcd.begin(COLONNE , RIGHE);
lcd.setCursor(0, 0);
}
void loop()
{
digitalWrite(A4, LOW); // metti a 0 il busy - rx disponibile
if (!digitalRead(A5))
{
digitalWrite(A4, HIGH); // metti a 1 il busy - rx NON disponibile
delay(10);
rx = (digitalRead, PIND); // digitalRead (PIND,puls); // leggi dato da inviare al display
if (rx > 19)
{
// per i caratteri stampabili
// lcd.print(rx);
// lcd.setCursor(riga, num++);
// ---------------------------------------------------------------------------------
// per i caratteri stampabili
lcd.setCursor(num++, riga);
lcd.print(rx);
// -----------------------------------------------------------------------------------
// stampato, mica difficile, con avanzamento del contatore di colonna
// adesso calcolo la nuova posizione del cursore
if (num >= COLONNE)
{
// oltre la fine del display
num = 0;
riga++;
// indietro carrello, avanti riga, come sulle macchine da scrivere
if (riga >= RIGHE)
{
// fine display
riga = 0;
// lcd.clear();
// indietro alla prima riga
}
}
}
}
}