Nokia 3310/5110 3.3V Display with 5V Arduino

For my sous-vide arduino project I also needed a nice display, and I stumbled upon a 5110/3310 Nokia display which are sold for under 5€ (here). Since its based on a PCD8544, there are many libraries for arduino, so I gave it a try.


After reading the first tutorial, I realized, that the 3110 uses 3.3V input, while the arduino has 5V output.There are several solution to this:

  • Logic Converter: One possibility is to use used a logic level converter like this to reduce the signals from 5 to 3.3V. Since I didn’t have one of those, and wanted to get started right away, I tried the second approach:
  • Grow some balls: Some people claim, that the maximum input voltage the 3110 can take is 5V, so it should be ok, to run it directly with the arduino, but it supposedly reduces the lifetime of the display. I gave it a shot following this tutorial. (They used 1-10kOhm to limit the current through the display). It worked out of the box, and I played around a bit with my display. On the long term, I didn’t feel good with the 5V though, so I kept looking for other solutions.
  • Voltage Dividers: I found a post, where someone used a voltage devider with 100 and 150 Ohm, to drive the display. That’s what I’m using now, and since I didn’t find a good tutorial for it online, I wrote this post:

Since the 100/150 Ohm resistors would draw a lot of power, I decided to go for higher ones, and chose 3.6kOhm and 2.2kOhm (mainly because I had a huge bunch of those on the table, maybe higher resistance are even better). Since my 3110 already had pins to put it onto a bread board, my setup looks a bit different:


Since there are some other things wired into my bread board, the actual image is a bit more crowded:

Nokia 3310 on breadboard

Nokia 3310 on breadboard

As you can see, the display works fine, but I wasn’t brave enough to connect the backlight LEDs until now. Currently I’m working on other parts of the project, but once those are finished, I might give the backlight a try.


To get it working, I used the adafruit library but there are plenty of others available as well. You just have to be careful, the naming and ordering of the pins varies with different display versions, so for my version of the display, I had to initialize like this:

Adafruit_PCD8544 display = Adafruit_PCD8544(3,4,5,7,6);

The adafruit library is quite comfortable to use, but requires you to display a splash screen, so maybe a freer library would be nice in the long term.

Please let me know, if you have any comments or found the post useful 🙂

This entry was posted in Arduino and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s