Código Arduino para um LCD Nokia 5110
Neste tutorial, vamos explorar como usar a tela LCD Nokia 5110 com um Arduino para exibir vários gráficos e textos. O projeto demonstrará como desenhar linhas, círculos, retângulos e até exibir texto dentro dessas formas. Ao final, você terá uma melhor compreensão de como interagir com este LCD usando código Arduino.

Para fornecer orientações mais claras, encorajo você a assistir ao vídeo associado para uma representação visual da fiação e da implementação do código (no vídeo em 00:00).
Hardware explicado
O LCD Nokia 5110 é um display gráfico compacto que opera no protocolo SPI, permitindo comunicação eficiente com o Arduino. Ele apresenta uma resolução de 84x48 pixels, suficiente para exibir gráficos básicos e texto. O display requer apenas alguns pinos para funcionar, tornando-o uma ótima escolha para projetos com opções de E/S limitadas.
Além do LCD, você precisará de uma placa Arduino, tipicamente um Arduino Uno ou similar, uma protoboard e alguns cabos jumper. A fiação é simples, e o LCD é alimentado ao conectar seu pino VCC à saída de 5V do Arduino.
Detalhes da Ficha Técnica
| Fabricante | Philips |
|---|---|
| Número da peça | PCD8544 |
| Tensão lógica/IO | 3.3 V |
| Tensão de alimentação | 3.3 - 5.0 V |
| Corrente máxima | 200 µA |
| Resolução de tela | 84 x 48 pixels |
| Interface | Serial (SPI) |
| Pacote | Módulo |
- Use um resistor limitador de corrente no pino do LED para evitar danos.
- Certifique-se de que as conexões a VCC e GND estejam seguras para evitar problemas na tela.
- Verifique novamente as conexões dos pinos SPI: SCE, RST, D/C, DN e SCLK.
- Mantenha a configuração de contraste dentro da faixa recomendada (40-60).
- Atualize a tela após desenhar os gráficos para ver as alterações.
Instruções de fiação

Para ligar o LCD Nokia 5110 ao seu Arduino, faça as seguintes conexões:
- Conecte os LCDs
VCCpino para o Arduino5Vpino. - Conecte o
GNDpino do LCD para um dos pinos do ArduinoGNDpinos. - Conecte o
SCEpino no LCD para pino7no Arduino. - Conecte o
RSTpino a pino6. - Conecte o
D/Cpino a pino5. - Conecte o
DN (MOSI)pino a pino11. - Conecte o
SCLKpino a pino13. - Por fim, conecte o
LEDpino a pino9através de um resistor de 330 ohms.
Essas conexões permitirão que o Arduino se comunique com o LCD de forma eficaz. Se precisar ajustar a fiação para a sua configuração específica, certifique-se de que os pinos SPI permaneçam os mesmos.
Exemplos de código e tutorial
O trecho de código a seguir inicializa o LCD e ajusta o contraste:
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
}
Neste trecho, olcdBegin()A função configura os pinos necessários para o LCD, enquantosetContrast(40)Ajusta o contraste do ecrã. Após um breve atraso, o ecrã é limpo para preparar novo conteúdo.

Em seguida, podemos desenhar uma linha no display:
setLine(1, 4, 70, 4, BLACK); // Draw a horizontal line
updateDisplay(); // Make the line visible
Esta linha de código usa osetLine()função, que recebe as coordenadas inicial e final juntamente com um parâmetro de cor. Após desenhar, é essencial chamarupdateDisplay()para refletir as alterações na tela.
Finalmente, podemos exibir texto dentro de um retângulo:
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
Aqui,setRect()cria um retângulo, enquantosetStr()coloca o texto dentro dele. Os parâmetros de cor definem como o retângulo e o texto aparecem na tela.
Demonstração / O que esperar
Ao executar o código, você deverá ver uma série de gráficos exibidos no Nokia 5110 LCD, incluindo linhas, círculos, retângulos e texto. Certifique-se de que a fiação esteja correta para evitar problemas como polaridade invertida ou entradas flutuantes, que podem impedir o funcionamento do display (no vídeo em 02:30).
Marcas de tempo do vídeo
- 00:00- Introdução ao projeto
- 01:30- Instruções de fiação
- 03:00- Configuração do código e explicação
- 05:00- Exibindo gráficos e texto
- 07:30- Conclusão e modificações adicionais
/*
* 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);
}
Coisas que você pode precisar
-
AmazonasCompre o Joystick XY na Amazonamzn.to
-
Amazonas
Recursos e referências
Ainda não há recursos.
Arquivos📁
Arquivo Obrigatório (.h)
-
robojax-nokia5110.h header file for Arduino
robojax-nokia5110.zip0.01 MB
Arquivo Fritzing
-
LCD Nokia 5110
Nokia_5110_LCD.fzpz0.03 MB -
Joystick Preto KY-023
Black Joystick KY-023.fzpz0.02 MB