Salve, vorrei cominciare un progetto dove mi interesserebbe avere nel display lcd 20×4, il disegno di una batteria (come quella che si trova nel display di ogni smartphone). Spero possiate aiutarmi...
Gli LCD hanno il set di caratteri fisso, ma ci sono otto posizioni che invece sono programmabili disegnando il simbolo pixel a pixel ...
Ti allego il datasheet del più diffuso controller per LCD (sono tutto compatibili con questo) così vedi dove sono mappati e come si fano i caratteri "custom" (CGRAM) .
Devi disegnarti vari elementi per rappresentare la batteria a pezzi (pieni o vuoti) per indicare i vari valori di carica.
Guglielmo
P.S.: Normalmente, le librerie per LCD, già prevedono delle funzioni per la memorizzazione di tali caratteri.
HD44780.pdf (322 KB)
Poi capisco anche che vorresti sapere come si fa in pratica...
All'inizio del programma, definisci i caratteri che ti servono (io avevo bisogno di una freccia verso l'alto, una verso il basso ed una destra-sinistra per vedere se l'umidità era in salita, stabile oppure in discesa)
#include <PCF8574_HD44780_I2C.h>
PCF8574_HD44780_I2C lcd(0x27,20,4);
// make some custom characters:
byte arrowUp[8] = {
0b00100,
0b01110,
0b10101,
0b00100,
0b00100,
0b00100,
0b00100,
0b00000
};
byte arrowDn[8] = {
0b00100,
0b00100,
0b00100,
0b00100,
0b10101,
0b01110,
0b00100,
0b00000
};
byte stable[8] = {
0b00000,
0b00000,
0b01010,
0b11111,
0b01010,
0b00000,
0b00000,
0b00000
};
Poi, nel SETUP, passi i tuoi caratteri al programma:
void setup() {
// Init LCD
lcd.init ();
// create new characters
lcd.createChar(0, arrowUp);
lcd.createChar(1, arrowDn);
lcd.createChar(2, stable);
...e nel momento che li vuoi far apparire sul LCD li scrivi così:
lcd.setCursor (18,2);
if (RH==RHave) lcd.write(byte(2)); // scrittura caratteri speciali
if (RH<RHave) lcd.write(byte(1));
if (RH>RHave) lcd.write(byte(0));
Per la tua batteria (che per forza di cose disegnerai in verticale) puoi fare tre o quattro caratteri con i vari livelli di riempimento, come nei telefonini.
Quello te lo lascio disegnare a te
grazie, per le risposte, molto esaustivi entrambi. Invece se volessi utilizzare un oled o un display tfy? verrebbe più facile e magari la qualità sarebbe migliore? o è tutto il contrario?
vincenzO88:
grazie, per le risposte, molto esaustivi entrambi. Invece se volessi utilizzare un oled o un display tfy?
... sempre a manina i vari simboli ti devi disegnare e sempre come serie di bit disposti per righe o colonne li devi memorizzare
Guglielmo
_>steve-cr: ... senza dare sempre la "pappa fatta" basta magari suggerire agli utenti di studiarsi gli esempi delle librerie ... "CustomChars" per l'estattezza _
Grazie di nuovo. Vorrei avere un'ultima informazione, per un tft quale libreria bisogna consultare?
vincenzO88:
Grazie di nuovo. Vorrei avere un'ultima informazione, per un tft quale libreria bisogna consultare?
Dipende dal chip che controlla il TFT ... Adafruit ha una libreria per i TFT che vende lei, Rinky-Dink Electronics ha altre librerie ottimizzate per un'altra serie di chip e così via ...
Guglielmo