Ho fatto le modifiche suggerite ma non mi funzione il tutto.
Il motivo mi è chiaro. Non riesco a capire bene il funzionamento delle istruzioni consigliate.
Mosso da disperazione, ho cercato di inventarmi qualche sistema diverso per ottenere il risultato desiderato.
Ora il tutto funziona .... Ma con una pecca.
Scritto i primi 16 caratteri, al 17° mi va a capo della seconda riga ... Ma mi scrive due volte lo stesso carattere.
Poi tutto funziona bene e al 33° carattere cancella tutto il display e mi va a capo della prima riga ... ecc.
Dove sta l'inghippo?
Scusate il sistema elementare utilizzato nelle mie istruzioni.
Saverio.
[/co// LISTATO conta caratteri del 14/10/2017
// 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);
int prova=0; // variabile prova
int puls=0; // variabile lettuta dato da inviare al display
int num=0; // numero di caratteri scritti
int rig=0; // posizione carattere seconda riga
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(16,2);
lcd.setCursor(0,0);
}
void loop() {
digitalWrite (A4,LOW); // metti a 1 il busy - rx disponibile
prova=digitalRead(A5); // controlla se strobe=0 - dato uscita tx pronto
if (prova==LOW) {
digitalWrite (A4,HIGH); // metti a 1 il busy - rx disponibile
delay(10);
puls=(digitalRead,PIND); // digitalRead (PIND,puls); // leggi dato da inviare al display
delay(5);
int i=puls; //initializing variables
char puls=char(i);
if (puls<19) goto casa;
// ----------------------------------------------------------
num=(num++);
if (num>16) // se scritto 16 caratteri
{
lcd.setCursor(rig,1); // passa alla seconda riga display
lcd.print(puls); // stampa carattere dal 17° carattere
rig=(rig+1); // incrementa numero posizione carattere riga 2
if(num>31) // se scritto più di 32 caratteri
{
num=0; //azzera contatore numero carattere
rig=0; // azzera contatore riga 2
lcd.clear(); // cancella le due righe
lcd.setCursor(0,0);
}
}
lcd.print (puls); // presenta il dato sul display
delay(2);
interrupts();
}
else
{
casa:
delay(2);
}
}
]