Display NOKIA 5110

26.03.2017 Arduino #arduino #tutorial

Základní zapojení displaye NOKIA 5110 s deskou ARDUINO.


LCD displej z mobilního telefonu Nokia 5110 je jednoduše použitelný zobrazovací modul, který obsahuje černobílý displej s rozlišením 84x48 bodů a velikostí 1,6 palce. Mezi jeho výhody patří například přítomnost modrého podsvícení či nízká cena v porovnání s ostatními grafickými displeji. Malou nevýhodou je pak nutnost většího počtu propojovacích vodičů.

10168-02a

Pro propojení LCD displeje Nokie 5110 s Arduino deskou je zapotřebí propojit celkem 8 vodičů. Propojíme RST s pinem 8, CE s pinem 7, DC s pinem 6, DIN s pinem 5, CLK s pinem 4, VCC s pinem ƱV3, LIGHT s pinem GND (nebo můžeme odpojit, jestli nechceme podsvícení) a nakonec GND se zemí Arduina. Všechny zmíněné datové piny pak samozřejmě můžeme vyměnit za jiné volné, jen je nutné tuto změnu provést také v programu.

nokia-wire

Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu Nokia5110, návod jak na to je uveden zde. Ukázkový kód obsahuje na svém začátku připojení knihovny Nokia5110 a dále nastavení propojovacích pinů a inicializaci displeje z knihovny. V podprogramu setup je jako první uvedeno zahájení komunikace s displejem, dále jeho smazání a nastavení mezer mezi písmeny. U tohoto nastavení mezer můžeme vyzkoušet 0, 1 či 2 body, záleží, kolik budeme potřebovat vypsat písmen na řádek. Dalším příkazem se nastavuje kurzor, kdy první číslo v závorce odpovídá znaku na řádku a druhé samotnému řádku (číslování začíná od nuly, viz komentář v programu). Po nastavení kurzoru vytiskneme text uvedený v závorce a toto opakujeme pro každý řádek. V nekonečné smyčce loop pak vždy nastavíme kurzor na šestý řádek a následně převedeme pomocí uvedených příkazů číselnou proměnnou (zde čas získaný funkcí millis) na textový řetězec, který poté pomocí funkce LcdString vytiskneme na displej. Díky tomu, že při každém průběhu vypisujeme informaci na stejný řádek, nemusíme mazat celý displej, protože nová zpráva přepíše staré znaky. Na konci programu už je jen volitelná pauza, která simuluje případné další příkazy v programu.

// LCD displej Nokia 5110

// připojení knihovny Nokia5110
#include <Nokia5110.h>

// nastavení propojovacích pinů
#define RST 8
#define CE 7
#define DC 6
#define DIN 5
#define CLK 4

// inicializace LCD displeje z knihovny
LCDnokia5110 lcd(RST, CE, DC, DIN, CLK);

void setup(void)
{
  // zahájení komunikace s displejem
  lcd.LcdInitialise();
 // vymazání obsahu displeje
  lcd.LcdClear();
  // nastavení velikosti mezery mezi písmeny,
  // lze nastavit na 0, 1 či 2 body
  lcd.CharSpace = 1;
  // nastavení kurzoru na 27 znak, 1 řádek,
  // tj. číslování od nuly
  lcd.GotoXY(26,0);
  // vytištění zprávy
  lcd.LcdString("Navody");
  lcd.GotoXY(42,1);
  lcd.LcdString(".");
  lcd.GotoXY(6,2);
  lcd.LcdString("arduino-shop");
  lcd.GotoXY(42,3);
  lcd.LcdString(".");
  lcd.GotoXY(39,4);
  lcd.LcdString("cz");
}

void loop(void)
{
  // nastavení kurzoru na 21 znak, 6 řádek
  lcd.GotoXY(20,5);
  // pro vytištění číselné proměnné,
  // v tomto případě času, je nutné
  // toto číslo převést následujícím způsobem:
  // uložení času v sekundách (millis/1000)
  // do proměnné cas
  String cas = String(millis()/1000, DEC);
  // vytvoření pomocné proměnné tisk pro
  // uložení v tisknutelném tvaru,
  // číslo 10 udává počet znaků zprávy
  char tisk[10];
  // převod proměnné cas do proměnné tisk
  cas.toCharArray(tisk, 10);
  // vytištění informace na displej
  lcd.LcdString("Cas ");
  lcd.LcdString(tisk);
  lcd.LcdString(" s");
  // volitelná pauza 500 ms
  delay(500);
  
}

LCD displej z Nokia 5110 připojený k Arduino desce lze použít v různých zapojeních a zařízeních, kde potřebujeme vypisovat různé informace pro uživatele bez nutnosti používat počítač. Výhodou tohoto displeje je také možnost podsvícení displeje či přítomnost krycího skla a pevného rámečku, které poskytují dobrou ochranu před poškozením. Displej s použitím pokročilejších knihoven umožňuje vypisovat také grafické obrázky, ale tato možnost mi nepřijde na takto malém displeji příliš praktická a proto ji neuvádím.

Poznámka redakce: na trhu se vyskytuje více verzí tohoto modulu, které mohou mít jiné rozložení pinů a také změnu v zapínání podsvícení displeje (3,3V nebo GND).