come faccio a controllare un carattere con un pulsante?

io dovrei far muovere un carattere nello schermo lcd (16x2) a destra quando spingo un pulsante, come faccio a programmare questa “azione”? :cold_sweat:

Prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere con attenzione il REGOLAMENTO ...

Poi ... il LCD non è come uno schermo di PC che ha una qualche intelligenza a bordo, quindi ...
... alla pressione del pulsante ... devi riscrivere tu tutta la riga spostando opportunamente il carattere che vuoi spostare o, in modo più articolato, posizionare il cursore sul carattere che vuoi cancellare e scriverci uno spazio (" ") e posizionare il cursore dove vuoi mettere il carattere e scriverlo.

Guglielmo

@pollorenzo:
hai postato in italiano nella sezione inglese, ed un mod ha spostato il tuo thread nella cartella radice italiana dove gli utenti NON possono scrivere. Tu, invece, di segnalare il problema, hai visto bene di aprire un nuovo thread. Ora, per cortesia, il regolamento stampalo e studialo a mente, che oggi ti interrogo XD XD

Comunque se io fossi in te farei cosi:
se il carattere è per esempio “C”:

String carattere = "C";
if (pulsante == HIGH){
            carattere = carattere + " ";
}

Programmando i computer ad 8 bit degli anni '80 si imparavano tanti trucchetti :wink:
Per far "muovere" un carattere basta semplicemente tenere le sue coordinate X e Y, nel caso di un display LCD queste coordinate corrisponderanno a dove posizionare il cursore con gli appositi comandi della libreria LiquidCrystal.

Lo "spostamento" avviene così:

  1. si scrive uno spazio bianco alle coordinate del carattere
  2. si modificano le coordinate in base alle esigenze (ad esempio, se devo andare a destra, incremento di 1 il valore di X), controllando che non "esca dallo schermo" (ossia che X non diventi uguale o maggiore alle dimensioni orizzontali del display, nel nostro caso essendo X variabile da 0 a 15, se diventa 16 è "uscito") nel qual caso devo operare di conseguenza (ad esempio, facendo riapparire il carattere a sinistra (X uguale a 0).
  3. riscrivo il carattere nella nuova posizione

simonenascivera:
Comunque se io fossi in te farei cosi:

... che è la peggiore cosa che potresti fare !!! ]:smiley: ]:smiley: ]:smiley:

Ve lo volete mettere in testa che, salvo dove è obbligatorio, l'uso della classe String è totalmente da evitare !!!

Siete su una MCU no su un PC ...
... imparate quindi ad usare le stringhe del C ed ... eviterete subdoli problemi nei vostri programmi !

Guglielmo

leo72:
Programmando i computer ad 8 bit degli anni '80 si imparavano tanti trucchetti :wink:
...

... che in dettaglio descrive quando ho suggerito io, fin dal mio primo post qui sopra, come "modo più articolato" XD XD XD

Veniamo dalla stessa scuola i4004 (a 4 bit), i8008, i8080, ecc. ecc. :grin: :grin: :grin:

Guglielmo

Io andavo su MOS 65xx e i8086 :wink:

leo72:
Io andavo su MOS 65xx e i8086 :wink:

... ma io sono più vecchio di te :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: XD XD XD

Guglielmo

Ma hai incominciato con gli inizi (4004)???
anch io piú giovane;
Z80 e 6502

Ciao Uwe

uwefed:
Ma hai incominciato con gli inizi (4004) ???

Stiamo andando parecchio off-topic ... XD

... SI, Intel i4004 e poco dopo, Fairchild F8 e Intel i8008 ... poi a seguire Intel i8080, Zilog Z80, MOS 6502, Zilog Z8000, di sfuggita Motorola 68000 e poi Intel 8086, i386, e via dicendo :slight_smile:

La tesi l'ho fatta invece, per chi se li ricorda, con i bit-slice della serie AMD 2900 :wink:

Guglielmo

P.S. : ... se mi metto a cercare, in cantina ho ancora scatolette con dentro CPU/Periferiche dell'epoca :grin: :grin: :grin:

Comuque allora< se vuoi fare come dice guglielmo fai cosi:

x = 0;
if (pulsante == HIGH){
         x++
         lcd.setCursor(x,0);
}