Search Code

Ардуино код за Nokia 5110 LCD екран

Ардуино код за Nokia 5110 LCD екран


Во ова упатство, ќе истражиме како да го користиме Nokia 5110 LCD екранот со Arduino за прикажување на различни графики и текст. Проектот ќе демонстрира како да цртаме линии, кругови, правоаголници, па дури и да прикажуваме текст во тие форми. До крајот, ќе имате подобро разбирање за тоа како да комуницирате со овој LCD користејќи Arduino код.

Nokia 5110_LCD

За појасно водство, ве охрабрувам да го погледнете придружното видео за визуелен приказ на поврзувањето и имплементацијата на кодот (во видео на 00:00).

Објаснување на хардверот

Nokia 5110 LCD е компактен графички екран кој работи на SPI протоколот, овозможувајќи ефикасна комуникација со Arduino. Има резолуција од 84x48 пиксели, што е доволно за прикажување на основни графики и текст. Екранот бара само неколку пинови за работа, што го прави одличен избор за проекти со ограничени I/O опции.

Покрај LCD-то, ќе ви треба Arduino плоча, обично Arduino Uno или слично, прототипна плоча и неколку jumper жици. Поврзувањето е едноставно, а LCD-то се напојува со поврзување на неговиот VCC пин на 5V излезот од Arduino.

Детали од податочната листа

ПроизводителPhilips
Број на делPCD8544
Логички/I/O напон3.3 V
Напон на напојување3.3 – 5.0 V
Максимална струја200 µA
Резолуција на екранот84 x 48 пиксели
ИнтерфејсСериски (SPI)
ПакетМодул

  • Користете отпорник за ограничување на струјата за LED пинот за да спречите оштетување.
  • Осигурете се дека врските кон VCC и GND се сигурни за да избегнете проблеми со екранот.
  • Проверете ги SPI пинските врски: SCE, RST, D/C, DN и SCLK.
  • Чувајте ја поставката за контраст во препорачаниот опсег (40-60).
  • Ажурирајте го екранот по цртањето графики за да ги видите промените.

Инструкции за поврзување

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

За да го поврзете Nokia 5110 LCD со вашиот Arduino, следете ги овие врски:

  • Поврзете го VCC пинот на LCD-то со 5V пинот на Arduino.
  • Поврзете го GND пинот на LCD-то со еден од GND пиновите на Arduino.
  • Поврзете го SCE пинот на LCD-то со пин 7 на Arduino.
  • Поврзете го RST пинот со пин 6.
  • Поврзете го D/C пинот со пин 5.
  • Поврзете го DN (MOSI) пинот со пин 11.
  • Поврзете го SCLK пинот со пин 13.
  • Конечно, поврзете го LED пинот со пин 9 преку отпорник од 330 оми.

Овие врски ќе му овозможат на Arduino ефикасно да комуницира со LCD-то. Ако треба да ја прилагодите жичаната врска за вашата специфична поставка, осигурете се дека SPI пиновите остануваат конзистентни.

Примери на код и објаснување

Следниот фрагмент од код го иницијализира LCD-то и ја поставува контрастноста:


void setup() {
  Serial.begin(9600);
  lcdBegin(); // Иницијализација на LCD-то
  setContrast(40); // Поставување на нивото на контраст
  delay(2000);
  clearDisplay(BLACK); // Чистење на екранот
  updateDisplay(); // Ажурирање на екранот
}

Во овој фрагмент, функцијата lcdBegin() ги поставува потребните пинови за LCD-то, додека setContrast(40) ја прилагодува контрастноста на екранот. По кратко одложување, екранот се чисти за да се подготви за нови содржини.

Nokia 5110_LCD back view

Следно, можеме да нацртаме линија на екранот:


setLine(1, 4, 70, 4, BLACK); // Цртање на хоризонтална линија
updateDisplay(); // Направете ја линијата видлива

Оваа линија на код ја користи функцијата setLine(), која ги зема почетните и крајните координати заедно со параметар за боја. По цртањето, важно е да се повика updateDisplay() за да се рефлектираат промените на екранот.

Конечно, можеме да прикажеме текст во правоаголник:


setRect(10, 10, 70, 40, 1, BLACK); // Цртање на исполнет правоаголник
setStr("Robojax ", 15, 20, WHITE); // Прикажување на текст внатре
updateDisplay(); // Ажурирање за да се прикажат промените

Овде, setRect() создава правоаголник, додека setStr() поставува текст внатре во него. Параметрите за боја дефинираат како правоаголникот и текстот ќе изгледаат на екранот.

Демонстрација / Што да очекувате

По стартувањето на кодот, треба да видите серија графики прикажани на Nokia 5110 LCD-то, вклучувајќи линии, кругови, правоаголници и текст. Осигурете се дека вашата жичана врска е точна за да избегнете проблеми како обратен поларитет или лебдечки влезови, што може да го спречи функционирањето на екранот (во видео на 02:30).

Временски ознаки на видеото

  • 00:00 - Вовед во проектот
  • 01:30 - Инструкции за поврзување
  • 03:00 - Поставување на код и објаснување
  • 05:00 - Прикажување на графики и текст
  • 07:30 - Заклучок и дополнителни модификации

Images

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

Things you might need

Resources & references

No resources yet.

Files📁

Required File (.h)

Fritzing File