Problema simboli speciali display QC1602a

Salve ho necessità di scrivere il simbolo del grado ° con questo display, dai diversi post sembra sia basato sul processore Hitachi e sia uguale al HD44780U.

Ora ho trovato i caratteri speciali e le locazioni di memoria ma non riesco a capire come scrivere l'istruzione.

Ho provato ad inserirla con la seguente istruzione lcd.print(10110000); ma non è il simbolo del grado anche con l'istruzione lcd.print(00001011); niente da fare altri simboli :roll_eyes:

Come devo fare??

che libreria usi?

uso LiquidCrystal

allora guarda l'esempio "CustomCaracter", in pratica ti insegna come accedere i sigoli pixel di un carattere, in modo da creare le tue lettere...
In quetso caso disegna un cuore stilizzato :slight_smile:

[..]dichiarazione:[...]// make some custom characters:
byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};

[..]per stamparlo:[...]
// create a new character
  lcd.createChar(0, heart);

a me non stampa un carattere cuore ma questo dopo 22.00

Non tutti i display HD44780 compatibili adottano la stessa mappa dei caratteri.
Ad esempio, guarda questo datasheet: come puoi vedere, ci sono dei caratteri che non sono identici al tuo.

foto.jpg

ho trovato questo e funziona:

byte grado[8] = {              //configuro il carattere per rappresentare il grado centigrado
0b00000,
0b00100,
0b01010,
0b00100,
0b00000,
0b00000,
0b00000,
0b00000
};
int ciao;

questo lo crea e lo chiama ciao se ho ben capito, per scriverlo poi però non devo usare print ma write, così:

lcd.write(ciao);

così lo vedo :slight_smile:

Solo non mi è chiaro come creare con la struttura sopra nuovi caratteri =(
la butto lì non mi linciate, 5 righe verticali e 8 righe orizzontali sono gli zeri gli uno sono i pixel accesi sulle righe.

Per favore, includi il codice usando gli appositi tag :stuck_out_tongue:

Detto questo, è vero. I caratteri personalizzati si scrivono con write, non me lo ricordavo neanch’io :sweat_smile: :sweat_smile:

Per fare un carattere personalizzato, devi pensare che un bit è un pixel e che 0 sta per un pixel spento e 1 per un pixel acceso.
Se ti sviluppo il codice che hai messo usando “.” per lo 0 e “X” per l’1, vedrai apparire il circolino dei gradi:

.....
..X..
.X.X.
..X..
.....
.....
.....
.....

leo72:
Detto questo, è vero. I caratteri personalizzati si scrivono con write, non me lo ricordavo neanch'io :sweat_smile: :sweat_smile:

allora è sbagliato l'esempio ufficiale, io ho preso da lì...

La scheda sul reference contiene invece l'informazione corretta:

To display a custom character on the screen, write() its number.

Hai provato a scrivere

lcd.write(0xDF);

brunello:
Hai provato a scrivere

lcd.write(0xDF);

Questo scrive comunque un quadratino che sembra il simbolo del grado, come funziona l'istruzione 0xDF

Capito è in esadecimale.

Ho trovato questo link per creare i caratteri HD44780 LCD User-Defined Graphics

parapaolo:
come funziona l'istruzione 0xDF

Non è un'istruzione, è la rappresentazione esadecimale di 223.

lcd.print((char)223); :astonished: