Código de Pesquisa

Código Arduino para um LCD Nokia 5110

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.

Nokia 5110_LCD

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

FabricantePhilips
Número da peçaPCD8544
Tensão lógica/IO3.3 V
Tensão de alimentação3.3 - 5.0 V
Corrente máxima200 µA
Resolução de tela84 x 48 pixels
InterfaceSerial (SPI)
PacoteMó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

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

Para ligar o LCD Nokia 5110 ao seu Arduino, faça as seguintes conexões:

  • Conecte os LCDsVCCpino para o Arduino5Vpino.
  • Conecte oGNDpino do LCD para um dos pinos do ArduinoGNDpinos.
  • Conecte oSCEpino no LCD para pino7no Arduino.
  • Conecte oRSTpino a pino6.
  • Conecte oD/Cpino a pino5.
  • Conecte oDN (MOSI)pino a pino11.
  • Conecte oSCLKpino a pino13.
  • Por fim, conecte oLEDpino 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.

Nokia 5110_LCD back view

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

Imagens

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

Coisas que você pode precisar

Recursos e referências

Ainda não há recursos.

Arquivos📁

Arquivo Obrigatório (.h)

Arquivo Fritzing