Nano EVERY compatible LCD/OLED Library [Nokia5110 lcd]

Does anyone managed to use any lcd display with the Nano EVERY ? Is there any functionnal Library out there ?

I spent the last 3 days trying to display a simple "Hello World" using all libraries I found :
Adafruit_PCD8544 + Adafruit_GFX

Many of them come with a "Hello World" demo but I failed to print any text on my Nokia5110 LCD Display (PCD8544). (Let's assume my wiring was correct).

At some point the display got crazy with this tutorial :
.., I was able to see some pixels turned on and even some text from time to time but nothing to do with what the program was supposed to display. Then nothing, I'm not even able to reproduce it with the same configuration/code/wiring... So I guess my display is fine and it should be possible to use it with the Nano EVERY but I'm super confused now.

Any Clue ? I'm gonna try some other OLED displays soon, hope I'll get some results..

Thanks !

The Nano-EVERY has 5V GPIO. All TFT and OLED controllers are 3.3V. Modern COG LCD controllers are 3.3V
Elderly LCD controllers like HD44780 or KS0108 tolerate 5V logic.

This means that I expect to use 3.3V logic for things like PCD8544 or SSD1306.
All my shields or protoboards are wired for straight 3.3V logic i.e. without level shifter chips.

However I am 100% confident that U8g2 will work with Nano-EVERY. And would expect Adafruit_PCD8544 to work too.

If you quote a specific library version that gives a problem, I might wire up some level shifters and test a PCD8544 display.
I am reluctant to mess about with custom wiring when it is a vague "does not work".


Hi thank you for your response, I'm a beginner in the arduino's world so not sure I get everything. I connected the display to the 5V output of the Every and the pixels finally came alive.

I've been trying to execute the Adafruit_PCD8544 (v 1.1.1) demo code "pcdtest".
It should be looking like that : Adafruit PCD8544 Nokia 5110 LCD library example - YouTube

There is definitely something going on on the screen but it's a total mess. The shapes are uncompleted, there is a lot of noise, the little animation with the falling stars is leaking, I almost never spot any text displayed. And each time I reset it I got a different result...
See the picture attached, on the left what is expected, on the right what I get. Do you have an idea what could cause this ?

I don't see any external level shifters in your photos.


Yes you are right I don't have such a device, should I ? For now, the display is directly connected to the arduino.
Why can't I use the 3.3V output from the arduino to power the display ?
Do you mean the pins deliver 5V so I have to lower this with a level shifter ? Is it what is causing the interferences ? Can I solve the problem with some resistors ? (10k for CLK DN DC and RST and 1k for CE ?)

Sorry for that many questions, just trying to understand.

In your Original Post, you say that you are following a tutorial.

The tutorial clearly shows that you should connect VCC to 3.3V and use level shifters on the logic signals.

Yes, 10k series resistors should be ok. 1k is too low.

I suspect that you might "get away with it" for the PCD8544. Even though the datasheet clearly states:

Wiring Nokia 5110 LCD display module to Arduino Uno

Before we get to uploading code and sending data to the display, let’s hook the display up to the Arduino.

Connections are fairly simple. As we are implementing software SPI, we have flexible pin options. You can connect data transmission pins to any digital I/O pin. In our case the serial clock(CLK), serial data(DIN), data/command(DC), chip enable(CE) and reset(RST) pins are connected from pin 7 all the down to pin 3 on Arduino.

But unfortunately, the LCD has 3v communication levels, so we cannot directly connect these pins to the Arduino. We need some protection. This can be done by shifting levels.

One of the cheap and easiest way to shift levels is to add resistors inline with each data transmission pin. Just add 10kΩ resistors between the CLK, DIN, D/C, and RST pins and a 1kΩ resistor between CE.

It even shows the wiring diagram as a graphic with "real-looking" 10k resistors.

I am not sure what the

and a 1kΩ resistor between CE.

means. I suspect it is a typo.


In your Original Post, you say that you are following a tutorial.

The tutorial clearly shows that you should connect VCC to 3.3V and use level shifters on the logic signals.

Yes sure, but other tutorials didn't mention resistors or level shifters so I thought it was only about protecting the display and improving its lifetime.

I will dig that way, thank you very much for your time and advises :wink:

I just connected the PCD8544 to a Nano-EVERY with level shifters.

Adafruit_PCD8544 examples work fine.
U8g2 examples work fine.

If a tutorial says "level shifters" it means it.
Never believe Ebay shop advertisements.
If in doubt, ASK.

Life in general would be so much easier if 5V logic was banned from Arduino boards.
I used a YF08E chip. Breakout board from Ebay.
But 10k resistors are pretty cheap and easy.


I tried with resistors and still get the same kind of results (see pic attached).
RST > 10k > 3
CE > 10k > 4
DC > 10k > 5
Din > 10k > 6
Clk > 10k > 7
Vcc > 3.3V
BL > None/3.3V/5V

I am using the Adafruit_PCD8544 "pcdtest" demo.

I tried both Registers Emulation ATMEGA328 and 4809.

The animation is still totally corrupted, for some reason I got it running well just once and then it started to mix everything again. Touching the display's pins improved the results once !

Sometimes one or two shapes, texts or animation are perfectly displayed, sometimes nothing show up ... I always have to wait for about 10 sec before the demo starts after each reset.

Also, at some point the TX built-in led starts blinking, what does that means ?

I'm wondering on which side is the issue coming from : Wiring (different results depending if I'm touching/maintaining the wires), breadboard connection discontinuity, Arduino itself (having hard time running this tiny program ?), Buffer clearance management, ..

I uploaded the code from the tutorial I mentioned in the beginning and get the same thing, messed up characters.

No results at all with U8g2 "HelloWorld" demo.

It's starting to be frustrating as I just want to start my project and not be stuck at this point.. I would be interested in seeing a picture of a good wiring, maybe I am still missing something.

Thanks !

Your breadboard looks clean. Your soldering looks respectable. The male-male jumper wires look fairly good.

Chinese male-male jumpers are the usual suspect.

Your wire routeing is obviously ok because the JPEG shows a working screen.
Any instability will be down to broken wires in the jumper cables.


So as you suggested I just changed all my jumpers, I also tested them all with a LED and did the same with all my resistors and breadboard holes, just in case. I didn't find any discontinuity even moving and shaking the cables in all directions.
I rewired all the setup as it was yesterday on the picture and today there is nothing showing up on the screen, .. but I'm not surrendering haha
It's probably useless but I'm gonna reinstall the sofware on my computer now.

Is the USB cable a potential source of instability ? I had it from a previous smartphone I had two years ago but is in a very good condition.

Now, is there a way I can test the display itself to spot any undesirable connection ?

A bad USB cable would prevent programming and Serial.
A bad breadboard could be a problem.

Only you can inspect your soldering.
It is very unlikely that the 5110 is a problem. But possible.

There are plenty of examples for 5110 and Uno. This would show if the EVERY has a problem.


okok, I'm gonna keep troubleshooting this.
The soldering is made by arduino so I guess we can exclude this.

You said you had success with an Every and PCD8544, the only difference was that you used a level shifter right ?

I'll probably go to the electronic shop and try different settings with the vendor.

I'll come back with the solution when I find it,


Quick update, I tested all the display's pins with a LED, and they are all receiving information from Arduino. the signals vary from one program to another so I can probalby safely exclude the Arduino, the code and the wiring as part of the problem. So now I'm assuming there is an issue with the display, I should probably test with an other one.

Any thoughts ?

Go on. You have just got to remove the Nano-Every and replace with a Nano. It is pin-compatible.

This would determine whether the display is bad or the Every is bad.

A replacement LCD is pretty cheap.