Go Down

Topic: Display 2004A LCD 4x20 come editare i caratteri? (Read 129 times) previous topic - next topic

guppy75

Salve,
sono alle prese con un dislpay lcd 4x20 collegato ad arduino trami I2C.
Sono a conoscenza del fatto che ci sono 8 caratteri editabili, ma cercando in rete e qui sul forum non sono riuscito a trovare una guida che mi spieghi come fare.
Qualcuno può indicarmi il link per una guida anche in inglese?

SukkoPera

#1
Aug 14, 2015, 10:29 am Last Edit: Aug 14, 2015, 10:31 am by SukkoPera
Che libreria stai usando per pilotarlo? Hai provato con lcd.createChar() come puoi vedere ad esempio a https://bitbucket.org/fmalpartida/new-liquidcrystal/src/ba76a8c1f1758e6934498337a17e04421fae9dbb/examples/HelloWorld_4bit/HelloWorld_4bit.pde?at=default ?

guppy75

Uso la LiquidCrystal_I2C, al momento stò pasticciando con uno sketch che sono riuscito a trovare in rete e sono riuscito a creare i miei 8 caratteri di cui ho bisogno, ma vorrei capire meglio come funzionano per implementarli nel mio sketch

SukkoPera

Se hai uno sketch funzionante che fa quel che vuoi, cosa ancora non capisci?

guppy75

Premetto che non sono un programmatore, ma stò cercando di imparare a programmare arduino cercando di modificare gli sketch di esempio e quello che trovo in rete.
Lo sketch che ho trovato e con cui stò pasticciando non è quello che mi serve, ma grazie a lui ho capito come impostare gli otto caratteri editabili, però non ho capito due cose:

la prima riga del codice che cosa dice?
come faccio a richiamare i caratteri editati?

Code: [Select]


const uint8_t charBitmap[][8] =
{
  { 0, 0, 0, 0, 0, 0, 0, 0x1f },
  { 0, 0, 0, 0, 0, 0, 0x1f, 0x1f },
  { 0, 0, 0, 0, 0, 0x1f, 0x1f, 0x1f },
  { 0, 0, 0, 0, 0x1f, 0x1f, 0x1f, 0x1f },
  { 0, 0, 0, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f },
  { 0, 0, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f },
  { 0, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f },
  { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }
 
}

;

SukkoPera

Se ti fossi premurato di guardare il link che ho postato prima forse avresti le idee un po' più chiare ora...

guppy75

Il link lo avevo guardato, ma sulle prime non mi ero accorto che poteva essere scritto anche in modo diverso, comunque sono riuscito ad arrivare alla soluzione. Ti ringrazio, comunque se ti è possibile puoi spiegarmi la prima riga del codice che ho postato che cosa fa'? potrebbe servirmi in futuro e vorrei capire. Grazie


SukkoPera

#8
Aug 14, 2015, 04:52 pm Last Edit: Aug 14, 2015, 04:53 pm by SukkoPera
Il tuo codice fa la stessa cosa di quello che ho postato io, solo in maniera meno leggibile e gestibile. Quel che ho postato io mi sembra estremamente semplice: prima si disegna il carattere tramite 0 e 1 e poi lo si carica nel display:

Code: [Select]
byte smiley[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};

lcd.begin (16, 2);
lcd.createChar (0, smiley);


Se guardi bene, tra gli 0 e 1 puoi distinguere nettamente la forma del carattere. Per poi usarlo basta stampare i caratteri 0... 7:

Code: [Select]
lcd.print (char(0));

Go Up