Arduino-code voor een Nokia 5110 LCD-scherm
In deze tutorial verkennen we hoe je het Nokia 5110 LCD-scherm met een Arduino kunt gebruiken om verschillende graphics en tekst weer te geven. Het project demonstreert hoe je lijnen, cirkels, rechthoeken tekent en zelfs tekst binnen die vormen weergeeft. Aan het einde heb je een beter begrip van hoe je met dit LCD-scherm kunt communiceren met behulp van Arduino-code.

Voor duidelijkere begeleiding raad ik je aan de bijbehorende video te bekijken voor een visuele weergave van de bedrading en code-implementatie (in video op 00:00).
Hardware Uitgelegd
Het Nokia 5110 LCD-scherm is een compact grafisch display dat werkt op het SPI-protocol, waardoor efficiënte communicatie met de Arduino mogelijk is. Het heeft een resolutie van 84x48 pixels, wat voldoende is voor het weergeven van basisgraphics en tekst. Het display heeft slechts een paar pinnen nodig om te werken, waardoor het een uitstekende keuze is voor projecten met beperkte I/O-opties.
Naast het LCD-scherm heb je een Arduino-bord nodig, meestal een Arduino Uno of vergelijkbaar, een breadboard en wat jumperdraden. De bedrading is eenvoudig en het LCD-scherm wordt gevoed door de VCC-pin aan te sluiten op de 5V-uitgang van de Arduino.
Datasheet Details
| Fabrikant | Philips |
|---|---|
| Onderdeelnummer | PCD8544 |
| Logica/IO-spanning | 3,3 V |
| Voedingsspanning | 3,3 – 5,0 V |
| Maximale stroom | 200 µA |
| Schermresolutie | 84 x 48 pixels |
| Interface | Serieel (SPI) |
| Verpakking | Module |
- Gebruik een stroombegrenzende weerstand voor de LED-pin om schade te voorkomen.
- Zorg ervoor dat verbindingen met VCC en GND stevig zijn om weergaveproblemen te voorkomen.
- Controleer de SPI-pinverbindingen dubbel: SCE, RST, D/C, DN en SCLK.
- Houd de contrastinstelling binnen het aanbevolen bereik (40-60).
- Werk het display bij na het tekenen van graphics om wijzigingen te zien.
Bedradingsinstructies

Om het Nokia 5110 LCD-scherm op je Arduino aan te sluiten, volg je deze verbindingen:
- Verbind de
VCC-pin van het LCD-scherm met de5V-pin van de Arduino. - Verbind de
GND-pin op het LCD-scherm met een van deGND-pinnen van de Arduino. - Verbind de
SCE-pin op het LCD-scherm met pin7op de Arduino. - Verbind de
RST-pin met pin6. - Verbind de
D/C-pin met pin5. - Verbind de
DN (MOSI)-pin met pin11. - Verbind de
SCLK-pin met pin13. - Verbind ten slotte de
LED-pin met pin9via een weerstand van 330 ohm.
Deze verbindingen zorgen ervoor dat de Arduino effectief met het LCD-scherm kan communiceren. Als je de bedrading voor je specifieke opstelling moet aanpassen, zorg er dan voor dat de SPI-pinnen consistent blijven.
Codevoorbeelden en Uitleg
Het volgende codefragment initialiseert het LCD-scherm en stelt het contrast in:
void setup() {
Serial.begin(9600);
lcdBegin(); // Initialiseer het LCD-scherm
setContrast(40); // Stel het contrastniveau in
delay(2000);
clearDisplay(BLACK); // Wis het display
updateDisplay(); // Werk het display bij
}
In dit fragment stelt de functie lcdBegin() de benodigde pinnen voor het LCD-scherm in, terwijl setContrast(40) het contrast van het display aanpast. Na een korte vertraging wordt het display gewist om klaar te maken voor nieuwe inhoud.

Vervolgens kunnen we een lijn op het display tekenen:
setLine(1, 4, 70, 4, BLACK); // Teken een horizontale lijn
updateDisplay(); // Maak de lijn zichtbaar
Deze coderegel gebruikt de functie setLine(), die de start- en eindcoördinaten samen met een kleurparameter neemt. Na het tekenen is het essentieel om updateDisplay() aan te roepen om de wijzigingen op het scherm weer te geven.
Ten slotte kunnen we tekst binnen een rechthoek weergeven:
setRect(10, 10, 70, 40, 1, BLACK); // Teken een gevulde rechthoek
setStr("Robojax ", 15, 20, WHITE); // Geef tekst binnen weer
updateDisplay(); // Werk bij om de wijzigingen te tonen
Hier maakt setRect() een rechthoek, terwijl setStr() tekst erin plaatst. De kleurparameters bepalen hoe de rechthoek en tekst op het scherm verschijnen.
Demonstratie / Wat te Verwachten
Bij het uitvoeren van de code zou je een reeks graphics op het Nokia 5110 LCD-scherm moeten zien, waaronder lijnen, cirkels, rechthoeken en tekst. Zorg ervoor dat je bedrading correct is om problemen zoals omgekeerde polariteit of zwevende ingangen te voorkomen, die het display kunnen verhinderen te functioneren (in video op 02:30).
Videotijdstempels
- 00:00 - Introductie tot het project
- 01:30 - Bedradingsinstructies
- 03:00 - Code-instelling en uitleg
- 05:00 - Graphics en tekst weergeven
- 07:30 - Conclusie en verdere aanpassingen
/*
* This is Arduino code to use a dual-axis XY joystick with a Nokia 5110 LCD.
* It also reads a switch.
* Other Arduino libraries and videos: https://robojax.com
* Watch the video for this code to learn it fully.
* Watch the video here: https://youtu.be/Pk5Wig5EO0s
*
* Get this code and other Arduino codes from Robojax.com.
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase my course on Udemy.com: http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this. You can support me on Patreon: http://robojax.com/L/?id=63
or make a donation using PayPal: http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. *
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Nokia 5110 LCD Example Code
Graphics driver and PCD8544 interface code for SparkFun's
84x48 Graphic LCD.
https://www.sparkfun.com/products/10168
Original source code:
https://github.com/sparkfun/GraphicLCD_Nokia_5110
This stuff could all be put into a library, but we wanted to
leave it all in one sketch to keep it as transparent as possible.
Hardware: (Note: most of these pins can be swapped)
Graphic LCD Pin ---------- Arduino Pin
1-VCC ---------------- 5V
2-GND ---------------- GND
3-SCE ---------------- 7
4-RST ---------------- 6
5-D/C ---------------- 5
6-DN(MOSI) ---------------- 11
7-SCLK ---------------- 13
8-LED - 330 Ohm res -- 9
The SCLK, DN(MOSI), must remain where they are, but the other
pins can be swapped. The LED pin should remain a PWM-capable
pin. Don't forget to stick a current-limiting resistor in line
between the LCD's LED pin and Arduino pin 9!
Modified by Ahmad S. for Robojax.com
on Mar 11, 2018 at 20:49 in Ajax, Ontario, Canada
*/
#include <SPI.h>
#include "robojax-nokia5110.h"
void setup()
{
Serial.begin(9600);
lcdBegin(); // This will setup our pins, and initialize the LCD
//updateDisplay(); // with displayMap untouched, SFE logo
setContrast(40); // Good values range from 40-60
delay(2000);
clearDisplay(BLACK);
updateDisplay();
}
void loop()
{
// setPixel takes 2 to 3 parameters. The first two parameters
// are x and y variables. The third optional parameter is
// a "color" boolean. 1 for black, 0 for white.
// setPixel() with two variables will set the pixel with
// the color set to black.
// clearPixel() will call setPixel with the color set to
// white.
// setPixel(random(0, LCD_WIDTH), random(0, LCD_HEIGHT));
// After drawing something, we must call updateDisplay()
// to actually make the display draw something new.
//invertDisplay(); // This will swap all bits in our display
// setLine(x0, y0, x1, y1, bw) takes five parameters. The
// first four are coordinates for the start and end of the
// line. The last parameter is the color (1=black, 0=white).
setLine(1, 4, 70, 4, BLACK);
updateDisplay();
delay(2000);
//analogWrite(blPin, i); // blPin is connected to BL LED
/* setRect Example */
clearDisplay(WHITE); // Start fresh
// setCircle takes 5 parameters -- x0, y0, radius, bw, and
// lineThickness. x0 and y0 are the center coordinates of the circle.
// radius is the...radius. bw is the color (0=white, 1=black)
// lineThickness is the line width of the circle, 1 = smallest
// thickness moves in towards the center.
setCircle(20, 30, 20, BLACK, 2);
updateDisplay();
delay(2000);
clearDisplay(WHITE);
setStr("Welcome to ", 0, 0, BLACK);
updateDisplay();
delay(100);
setLine(0, 9, 70, 9, BLACK);
updateDisplay();
delay(100);
setStr("Robojax ", 20, 20, BLACK);
updateDisplay();
delay(2000);
clearDisplay(WHITE);
// setRect takes six parameters (x0, y0, x1, y0, fill, bw)
// x0, y0, x1, and y0 are the two diagonal corner coordinates
// fill is a boolean, which determines if the rectangle is
// filled in. bw determines the color 0=white, 1=black.
setRect(10, 10, 70, 40, 1, BLACK);
setStr("Robojax ", 15, 20, WHITE);
updateDisplay();
delay(2000);
/* setCircle Example */
clearDisplay(WHITE);
}
Dingen die je misschien nodig hebt
-
Amazon
-
AmazonPurchase XY joystick from Amazonamzn.to
Hulpmiddelen en referenties
Nog geen middelen.
Bestanden📁
Vereist bestand (.h)
-
robojax-nokia5110.h header-bestand voor Arduino
robojax-nokia5110.zip0.01 MB
Fritzing-bestand
-
Nokia 5110 LCD
Nokia_5110_LCD.fzpz0.03 MB -
Zwarte joystick KY-023
Black Joystick KY-023.fzpz0.02 MB