Cerca codice

Codice Arduino per un display LCD Nokia 5110

Codice Arduino per un display LCD Nokia 5110


In questo tutorial esploreremo come utilizzare lo schermo LCD Nokia 5110 con un Arduino per visualizzare vari elementi grafici e testo. Il progetto mostrerà come disegnare linee, cerchi, rettangoli e persino visualizzare testo all'interno di queste forme. Al termine, avrai una comprensione migliore di come interagire con questo LCD utilizzando il codice Arduino.

Nokia 5110_LCD

Per fornire indicazioni più chiare, ti incoraggio a guardare il video associato per una rappresentazione visiva del cablaggio e dell'implementazione del codice (nel video a 00:00).

Hardware spiegato

L'LCD Nokia 5110 è un display grafico compatto che funziona tramite il protocollo SPI, consentendo una comunicazione efficiente con l'Arduino. Presenta una risoluzione di 84x48 pixel, sufficiente per visualizzare grafica e testo di base. Il display richiede solo pochi pin per funzionare, rendendolo un'ottima scelta per progetti con opzioni di I/O limitate.

Oltre al display LCD, avrai bisogno di una scheda Arduino, tipicamente un Arduino Uno o un modello simile, di una breadboard e di alcuni cavi jumper. Il cablaggio è semplice e l'LCD viene alimentato collegando il suo pin VCC all'uscita 5V dell'Arduino.

Dettagli della scheda tecnica

ProduttorePhilips
Numero di partePCD8544
Tensione logica/IO3,3 V
Tensione di alimentazione3,3 - 5,0 V
Corrente massima200 µA
Risoluzione dello schermo84 x 48 pixel
InterfacciaSeriale (SPI)
PacchettoModulo

  • Usare una resistenza limitatrice di corrente sul pin del LED per evitare danni.
  • Assicurarsi che le connessioni a VCC e GND siano salde per evitare problemi di visualizzazione.
  • Ricontrollare le connessioni dei pin SPI: SCE, RST, D/C, DN e SCLK.
  • Mantieni l'impostazione del contrasto nell'intervallo consigliato (40-60).
  • Aggiorna il display dopo aver disegnato la grafica per vedere le modifiche.

Istruzioni di cablaggio

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

Per collegare il display Nokia 5110 al tuo Arduino, segui queste connessioni:

  • Collega gli LCDVCCpin all'Arduino5Vspillo.
  • Collega ilGNDpin del display LCD a uno dei pin dell'ArduinoGNDspilli.
  • Collega ilSCEpin sul display LCD al pin7sull'Arduino.
  • Collega ilRSTda pin a pin6.
  • Collega ilD/Cda pin a pin5.
  • Collega ilDN (MOSI)pin per pin11.
  • Collega ilSCLKpin a pin13.
  • Infine, collega ilLEDpin a pin9attraverso un resistore da 330 ohm.

Queste connessioni permetteranno all'Arduino di comunicare efficacemente con l'LCD. Se devi adattare il cablaggio alla tua configurazione specifica, assicurati che i pin SPI rimangano coerenti.

Esempi di codice e guida passo passo

Il seguente frammento di codice inizializza l'LCD e imposta il contrasto:


void setup() {
  Serial.begin(9600);
  lcdBegin(); // Initialize the LCD
  setContrast(40); // Set contrast level
  delay(2000);
  clearDisplay(BLACK); // Clear the display
  updateDisplay(); // Update the display
}

In questo snippet, illcdBegin()la funzione imposta i pin necessari per l'LCD, mentresetContrast(40)Regola il contrasto del display. Dopo una breve attesa, il display viene cancellato per prepararlo a nuovi contenuti.

Nokia 5110_LCD back view

Successivamente, possiamo disegnare una linea sul display:


setLine(1, 4, 70, 4, BLACK); // Draw a horizontal line
updateDisplay(); // Make the line visible

Questa riga di codice utilizza ilsetLine()funzione, che prende le coordinate iniziali e finali insieme a un parametro colore. Dopo aver disegnato, è essenziale chiamareupdateDisplay()per riflettere le modifiche sullo schermo.

Infine, possiamo visualizzare del testo all'interno di un rettangolo:


setRect(10, 10, 70, 40, 1, BLACK); // Draw a filled rectangle
setStr("Robojax ", 15, 20, WHITE); // Display text inside
updateDisplay(); // Update to show the changes

Qui,setRect()crea un rettangolo, mentresetStr()Posiziona il testo al suo interno. I parametri di colore definiscono come il rettangolo e il testo vengono visualizzati sullo schermo.

Dimostrazione / Cosa aspettarsi

Eseguendo il codice, dovresti vedere una serie di elementi grafici visualizzati sul display LCD Nokia 5110, inclusi linee, cerchi, rettangoli e testo. Assicurati che il cablaggio sia corretto per evitare problemi come polarità invertita o ingressi flottanti, che potrebbero impedire il funzionamento del display (nel video a 02:30).

Timestamp del video

  • 00:00- Introduzione al progetto
  • 01:30- Istruzioni di cablaggio
  • 03:00- Configurazione del codice e spiegazione
  • 05:00- Visualizzazione di grafica e testo
  • 07:30- Conclusione e ulteriori modifiche

Immagini

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.
Lingua: 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);  
 
}

Cose di cui potresti avere bisogno

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

File richiesto (.h)

File Fritzing