Another function is needed to write data to the Nokia 5110 display. Also a font (a 2 dimensional array) must be included. Additional functions are required to send strings of characters.
I also look briefly at sending X and Y address location commands so that text can be positioned anywhere on the display.
It appears you can't put curly brackets in the video description, so I've put the code listing and font data in the comments below.

By Julian

Youtuber, shed dweller, solar charge controller aficionado

15 thoughts on “Arduino nokia 5110 lcd tutorial #2 – getting text on the display”
  1. Avataaar/Circle Created with python_avatars aarif hassan says:

    first of all thanks to you and i need a help where i'm finding "font.h" librery

  2. Avataaar/Circle Created with python_avatars Marco Maroso says:

    Nice work…but…it doesnt work for me. I get exit status 1

    'ASCII' was not declared in this scope
    …where do I get the font.h ?

  3. Avataaar/Circle Created with python_avatars Mateusz ลukaszewski says:

    static const byte ASCII[][5] =

    {

    {0x00, 0x00, 0x00, 0x00, 0x00} // 20

    ,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !

    ,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "

    ,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #

    ,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $

    ,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %

    ,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &

    ,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '

    ,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (

    ,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )

    ,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *

    ,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +

    ,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,

    ,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d –

    ,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .

    ,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /

    ,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0

    ,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1

    ,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2

    ,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3

    ,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4

    ,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5

    ,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6

    ,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7

    ,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8

    ,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9

    ,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :

    ,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;

    ,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <

    ,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =

    ,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >

    ,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?

    ,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @

    ,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A

    ,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B

    ,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C

    ,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D

    ,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E

    ,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F

    ,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G

    ,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H

    ,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I

    ,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J

    ,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K

    ,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L

    ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M

    ,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N

    ,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O

    ,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P

    ,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q

    ,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R

    ,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S

    ,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T

    ,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U

    ,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V

    ,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W

    ,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X

    ,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y

    ,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z

    ,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [

    ,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ยฅ

    ,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]

    ,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^

    ,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _

    ,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `

    ,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a

    ,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b

    ,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c

    ,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d

    ,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e

    ,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f

    ,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g

    ,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h

    ,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i

    ,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j

    ,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k

    ,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l

    ,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m

    ,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n

    ,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o

    ,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p

    ,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q

    ,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r

    ,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s

    ,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t

    ,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u

    ,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v

    ,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w

    ,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x

    ,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y

    ,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z

    ,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {

    ,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |

    ,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }

    ,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e โ†

    ,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f โ†’

    };

  4. Avataaar/Circle Created with python_avatars Percit says:

    If somebody has a error with conversion, in string function as argument it should have been "const char* characters" . Thanks for video tho

  5. Avataaar/Circle Created with python_avatars Hans de Groot says:

    So many clip explaning how to use 1 display. but how do you use 2?

  6. Avataaar/Circle Created with python_avatars metamud says:

    Of course 6×84 is divisible by 3, every multiple of 6 is divisible by 3 and by 2 as 6 = 3*2 ๐Ÿ™‚

  7. Avataaar/Circle Created with python_avatars free electron says:

    I really like Julian's Arduino explorations. He talks just like a British airline pilot ๐Ÿ™‚

  8. Avataaar/Circle Created with python_avatars M Sreeram says:

    Can anyone send me the link to the code

  9. Avataaar/Circle Created with python_avatars George Pederson says:

    HI Julian where did you get ASCII code you used on the NOKIA 5110 display

  10. Avataaar/Circle Created with python_avatars ลฝiga Lausegger says:

    I have no random pixels ON. Is it possible you resetted it wrong? Reset needs to be done 30ms after VCC comes ON.

  11. Avataaar/Circle Created with python_avatars Godzilla GTRDude says:

    Hi, I can't find the font.h file

  12. Avataaar/Circle Created with python_avatars FlowPerformanceVideo says:

    I found that I need to add 10K resistors on my data lines to get the display to work

  13. Avataaar/Circle Created with python_avatars Dave -in-NJ says:

    any chance a new version for u8g2 will be available ?

  14. Avataaar/Circle Created with python_avatars Caleb Hille says:

    Cute ending

  15. Avataaar/Circle Created with python_avatars Marcelo Kaos says:

    You put me nostalgic with this tutorial remembering my beginnings on reading binary, mentally convert to decimal….but to hexa I needed the calculator ๐Ÿ˜€ Nice video….VERY useful for me.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.