Code zoeken

Arduino-code voor een Nokia 5110 LCD-scherm

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.

Nokia 5110_LCD

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

FabrikantPhilips
OnderdeelnummerPCD8544
Logica/IO-spanning3,3 V
Voedingsspanning3,3 – 5,0 V
Maximale stroom200 µA
Schermresolutie84 x 48 pixels
InterfaceSerieel (SPI)
VerpakkingModule

  • 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

Arduino wiring for Nokia 5110 LCD
Arduino wiring for Nokia 5110 LCD

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 de 5V-pin van de Arduino.
  • Verbind de GND-pin op het LCD-scherm met een van de GND-pinnen van de Arduino.
  • Verbind de SCE-pin op het LCD-scherm met pin 7 op de Arduino.
  • Verbind de RST-pin met pin 6.
  • Verbind de D/C-pin met pin 5.
  • Verbind de DN (MOSI)-pin met pin 11.
  • Verbind de SCLK-pin met pin 13.
  • Verbind ten slotte de LED-pin met pin 9 via 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.

Nokia 5110_LCD back view

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

Afbeeldingen

Nokia 5110_LCD back view
Nokia 5110_LCD back view
Arduino wiring for Nokia 5110 LCD
Arduino wiring for Nokia 5110 LCD
Nokia 5110_LCD
Nokia 5110_LCD
82-Arduino code: Dual-axis joystick with Nokia 5110 screen to display dots.
Taal: C++
/* 
 * 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

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Vereist bestand (.h)

Fritzing-bestand