Go Down

Topic: Comandi libreria Display (Read 161 times) previous topic - next topic

massimo1172

Jun 15, 2019, 05:18 pm Last Edit: Jun 16, 2019, 03:07 pm by massimo1172
Ciao a tutti, alcuni giorni fa ho acquistato un modulo display SSD1331, che utilizza le librerie display. GFX.
Ho fatto alcune prove con il mio arduino uno, e fin qui tutto bene.
Poi ho creato un progettino di inserimento numeri tramite testiera 4x4, tutto funziona bene, solo che visualizza il numero corrispondente al tasto premuto alle coordinate che gli ho impostato, sovrascrivendo il numero precedente, risultato dopo alcune digitazioni non si capisce più che tasto è stato premuto.
La domanda è: posso fare in modo che ad ogni pressione di un tasto cancelli il precedente?


Code: [Select]
void loop() {
 tastopremuto = keypad.getKey();
 if (tastopremuto)
 {
   display.setTextColor(RED);
   display.setTextSize(2,2);
   display.setCursor(40,30);
   display.print(tastopremuto);

  }
 
}



questo è il ciclo del programma.
Grazie mille a tutti a presto

gpb01

#1
Jun 15, 2019, 08:12 pm Last Edit: Jun 15, 2019, 08:12 pm by gpb01
>massimo1172:   ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice (indipendentemente dalla sua lunghezza) all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo
Search is Your friend ... or I am Your enemy !

Federico66

Mi sembra starno che con la sola print, visualizzi qualcosa!
Comunque prova ad aggiungere display.display(); dopo la print, cioè tutte le volte che devi visualizzare una nuova schermata.

Code: [Select]

  //...
  display.setCursor(40,30);
  display.print(tastopremuto);
  display.display();
  //...


Federico

massimo1172

Chiedo scusa a tutti.

Ho provato a fare come hai detto Federico, ma non cambia nulla.
A parte il fatto che nella libreria che ho installato (Adafruit_ssd1331.h), il comando "display.display()" non lo riconosce, (mi da errore), ho provato con "display.begin()" e in questo modo gira.
Mi chiedo se non sia possibile fare in modo che prima di riempire la variabile "tastopremuto" con l' ultima pressione di un tasto, possa cancellare il contenuto della variabile stessa per poi scriverla sul display temporaneamente vuota.

grazie

Federico66


Scusami, effettivamente SD1331 la "scrittura" avviene direttamente sul monitor, quindi non necessita dell funzione display! Leggi qui.

Quindi per cancellare lo schermo devi colorarlo di nero ;-)

Code: [Select]

display.fillScreen(BLACK);


ma, leggi la pagina che ti ho linkato, è interessante


Federico

massimo1172

grazie ancora Federico, effettivamente sembra essere l' unico modo per cancellare il testo digitato precedentemente.
Molto interessante il link che hai suggerito, grazie ancora
apresto

Go Up