Led matrix with HT1632C controller (3)

luca 09/10/2012 11

In this post, I’m going to show how to display some characters on your display…


If you give a look to the display’s datasheet, you figure out how leds are mapped to memory cells, starting from the top left corner:

Take a squared sheet and write the text, keeping in mind that char’s height is 8 squares and that you can use a maximum of 32 columns:

Every black square corresponds to a bit 1; every while square corresponds to a bit 0.

Write down the bits, reading them as the arrow indicates and using B as a prefix to tell Arduino’s IDE they are binary values:


Arduino has a very limited RAM capacity (2KB): to store a big amount of data you can use the program memory (32KB in Arduino Uno) with the keyword PROGMEM:

You need to use some particular methods (defined in pgmspace.h) to read data saved in program memory; I’m going to use pgm_read_byte():


The complete sketch is available in my Github’s repository.

It’s very simple:

  • it saves in PROGMEM the text to display (text[])
  • initializes the display
  • sends the text (24 columns) reading byte per byte the text[] array
  • sends 8 columns (64bits) of zeroes to address all the 32 columns of the display

Here’s some screenshots:


  1. Locomolo 10/10/2012 at 23:36 - Reply


    Is it posible to scroll a simple text?

    Is there any library dispo?


    • luca 11/10/2012 at 08:12 - Reply

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

  2. Locomolo 11/10/2012 at 20:16 - Reply

    Great!!!!! good work!

    I will follow your project

  3. Kevin 11/11/2015 at 21:31 - Reply

    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.


    • luca 11/11/2015 at 21:54 - Reply

      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?

      • Kevin 11/11/2015 at 23:37 - Reply

        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.

  4. torquaro 09/04/2016 at 16:07 - Reply

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

  5. torquato 09/04/2016 at 16:09 - Reply

    con arduino uno funziona tutto. Volevo sincronizzare ds1307 con NTP

  6. m.franco 10/03/2018 at 16:25 - Reply

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

    • luca 12/03/2018 at 09:14 - Reply

      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++) {

Leave A Response »

This website uses cookies to ensure you get the best experience on our website maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.