Matrice di led con HT1632C (3)

by luca
11 comments

In questo post, vedremo come visualizzare dei caratteri sul nostro display…

CODIFICA

Guardando il datasheet del display, si vede come i led siano mappati sulle celle della memoria RAM partendo dall’angolo in alto a sinistra:

Su un foglio di carta a quadretti prepariamo la scritta da visualizzare ricordando

che l’altezza dei caratteri è di 8 quadretti e che possiamo arrivare al massimo a 32 colonne:

Ad ogni quadretto nero corrisponde un bit a 1; ad ogni quadretto bianco corrisponde un bit a 0.

Scriviamo ora i bits, leggendoli come indicato dalle frecce e utilizzando come prefisso B per indicare ad Arduino che si tratta di valori binari:

PROGMEM

Arduino ha una memoria RAM molto limitata (2KB): per memorizzare grandi quantità di dati possiamo sfruttare la memoria programma (32KB in Arduino Uno) utilizzando la direttiva PROGMEM:

Per leggere i dati memorizzati con tale tecnica, è necessario utilizzare dei metodi dedicati (definiti in pgmspace.h); in particolare noi utilizzeremo pgm_read_byte():

SKETCH

Lo sketch completo è disponibile nel repository GitHub.

Il suo funzionamento è molto semplice:

[checklist]

  • memorizza in PROGMEM la scritta da visualizzare (text[])
  • inizializza il display
  • invia la scritta (24 colonne) leggendo byte per byte l’array text[]
  • invia infine 8 colonne (64bit) di zeri per completare le 32 colonne del display

[/checklist]

Ecco lo sketch in azione:

Related Posts

11 comments

Locomolo 10 ottobre 2012 - 23:36

Hi!

Is it posible to scroll a simple text?

Is there any library dispo?

Thanks!!

Reply
luca 11 ottobre 2012 - 08:12

Hello! I’m working on a scroll tutorial, it should be ready in a week. A library will follow!
Thanks

Reply
Locomolo 11 ottobre 2012 - 20:16

Great!!!!! good work!

I will follow your project

Reply
lucadentella.it – Matrice di led con HT1632C (4) 12 ottobre 2012 - 22:12

[…] precedente tutorial, abbiamo visto come visualizzare sul display una scritta statica, codificata e memorizzata nella […]

Reply
Kevin 11 novembre 2015 - 21:31

Hi Luca,

How can I expand the display so it won’t cut off at the 24th column? I would like to use the whole 32 columns to display texts.

Thanks

Reply
luca 11 novembre 2015 - 21:54

Hi Kevin, this is strange… everywhere in my code the buffer, the loops… are from 0 to 31 columns to use the full display… maybe an electrical problem?

Reply
Kevin 11 novembre 2015 - 23:37

Hi Luca

I will take a deeper look at it, but when i run the Rolling example, i can see the dot going all the way down to the end. I’ll let you know 🙂

Anyways I am wonder if there is a way to shut down the LED even when there is power floating.

Reply
torquaro 9 aprile 2016 - 16:07

non riesco a programmare la matrice led su un arduino compaibile WeMos D1 R2.
Ne sapete qualcosa ??????

Reply
torquato 9 aprile 2016 - 16:09

con arduino uno funziona tutto. Volevo sincronizzare ds1307 con NTP

Reply
m.franco 10 marzo 2018 - 16:25

buon giorno Luca, le chiedo cosa modificare negli esempi per utilizzare un HT1632c con 16 righe x 24 colonne. grazie

Reply
luca 12 marzo 2018 - 09:14

Salve, il controller non “conosce” il layout del display… un display 16×24 è “semplicemente” mappato in memoria come 384 celle diverse. La prima cosa da capire è come sono organizzate queste celle (per righe? per colonne?), ad esempio provando il mio sketch “rolling” mettendo for(int i = 0; i < 384; i++) {

Reply

Leave a Comment

tre × quattro =