🎅🏼 Vánoce klepou na dveře a u nás to znamená jediné: krabice se hromadí, ruce nám sviští, kávovar jede na plné obrátky, a zatímco snášíme zboží a lepíme štítky, radujeme se z každého balíčku, co k vám poputuje. 😊 Ale pozor! 🚚✨ Aby váš dárek dorazil pod stromeček včas, je třeba objednávku odeslat nejpozději do úterý 17.12. do 23:59 ⏱️. Poté už předáváme štafetu Ježíškovi. Děkujeme za vaši přízeň, děláte z nás nejšťastnější vánoční tým na světě. 🎁 Užijte si svátky plné pohody a splněných přání! ❤️

Práce s LCD je jednoduchá!

Práce s LCD je jednoduchá! Arduino návod.

Pokud se nespokojíte s výstupem na sériovou linku nebo hledáte kvalitnější výstup, který třeba nemusí být připojený k PC, pravděpodobně sáhnete po LCD displeji. Relativně levný LCD displej se vyrábí v různých velikostech (16x2, 16x4, 20x4…). Co ty čísla znamenají? První číslo určuje počet znaků na řádku a druhé číslo určuje počet řádků. Dále si můžete vybrat ze dvou barev pozadí displeje – modré a zelené.

Mezi hlavní výhody LCD displeje patří jejich dobrá čitelnost i na slunci, schopnost pracovat při nízkých teplotách a jednoduchost použití. A na to se teď podíváme podrobněji. 

zapojení LCD displeje

Zapojení LCD displeje jsou dvě. Základní zapojení a zapojení pomocí sběrnice I2C (stačí 4 vodiče). My si nyní ukážeme zapojení klasické (základní). Co si nachystáme na naše pokusy s LCD displejem?

Pokud máme všechno připravené, můžeme se naplno vrhnout do práce. Arduino UNO a LCD displej propojte podle následujícího schématu.

Zapojení 20x4, 16x4, 16x2 LCD displeje s deskou Arduino UNO

Zásadní věc, kterou třeba zdůraznit je, že zapojení pro všechny velikosti displejů jsou stejná! Jediná změna nastává v kódu na řádku lcd.begin(20,4);. Asi není těžké uhádnout, jak se příkaz změní. Ale pro úplnost je to lcd.begin(počet znaků na řádku,počet řádků);
Trimrem (potenciometrem) nastavíte jas znaků. Pokud tedy po zapojení a nahrání programu nic nevidíte, tak nepanikařte a zkuste pokroutit potenciometrem.
Poslední 2 vodiče (červený a černý) mají na starosti LED podsvětlení displeje, pokud displej nesvítí vůbec, hledejte chybu právě tam. Pokud jsou na displeji všechny znaky bílé, pak to upravte nastavením potenciometru, aby byly tak akorát neviditelné.

Jak donutit LCD ukázat znaky?

Programování displeje vyžaduje knihovnu, tu ale nemusíme importovat, protože v případě Arduina IDE je knihovna obsažena v základním balíčku. A to je vše. Pojďme si tedy napsat něco na displej.

// importování knihovny
#include <LiquidCrystal.h>

// definice pinů pro lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  // řekneme, že displej je 20x4, kdo má 16x2 nebo 16x4 musí to přepsat
  lcd.begin(20, 4);
}

void loop()
{
  // nastavíme kurzor na 1. znak, 1. řádek (čísluje se od 0, zleva, shora)
  lcd.setCursor(0,0);
  // napíšeme, co chceme
  lcd.print("====================");
  // posuneme se na 2. řádek, 3. znak
  lcd.setCursor(2,1);
  lcd.print("www.hwkitchen.cz");
  // posuneme se na 3. řádek, 8. znak
  lcd.setCursor(7,2);
  lcd.print("navody");
  // posuneme se na 4. řádek, 1. znak
  lcd.setCursor(0,3);
  lcd.print("====================");
}

 

Příklad zobrazení na LCD displeji

Jak vidíte, zobrazit něco na LCD displeji není vůbec složité. Jediné, co je třeba si pamatovat je, jak fungují souřadnice pro určení polohy kurzoru. Na displeji se čísluje od (0,0) => kurzor na 1. znak, 1. řádku definujeme jako lcd.setCursor(0,0);. Ukážeme si pár příkladů, ať je to jasnější.

Ukázka programování LCD displeje, určování souřadnice

Další věc, se kterou se setkáte jsou české znaky. Ty bohužel LCD nezobrazí a většinou vám ukáže znaky, kterým nebudete rozumět. Můžeme ale zobrazovat znaky ASCII kódu nebo si definovat vlastní.

jak naučit LCD displej ASCII?

K tomu, abychom mohli definovat ASCII znak, budeme potřebovat tabulku, kde jsou všechny znaky definovány. Pokud byste se ptali proč to není jak obyčejná ASCII, tak je to způsobeno řadičem HD44780. To je integrovaný obvod, který se používá pro řízení řádkových displejů. Ale zpět k tabulce. V našem příkladu budeme chtít použít znak stupeň (°). V tabulce si ho najdeme ve sloupečku, který je označen jako 1101 a na řádku označeném jako xxxx1111. Místo xxxx dosadíme číslo sloupečku a vznikne číslo

1101 1111

Programování ASCII znaků na LCD displeji

Tady nastává čas, abyste oprášili znalosti informatiky a začali převádět z binární do desítkové soustavy, nebo zapněte třeba obyčejnou Windows kalkulačku a číslo převeďte.

Převod BIN-DEC ASCII znaku, který bude na LCD displeji

Teď víme, že stupeň je v desítkové soustavě definován jako 223 a můžeme ho zobrazit na displeji:

lcd.print((char)223);

 

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(20, 4);
}

void loop()
{
  lcd.setCursor(0,0);
  lcd.print((char)223);
}

 

 Příklad zobrazení ASCII znaku na LCD displeji

jak naučit lcd znaky, které nejsou v ascii?

Chcete napsat znak, který není ani v tabulce? Řešení existuje a není vůbec složité. Nejprve je třeba si uvědomit, že jednotlivé znaky se skládají z pixelů, konkrétně 8 na výšku a 5 na šířku. My můžeme displeji říct, které chceme rozsvítit. Vytvořme například znak teploměru. Jak budeme postupovat? Otevřete stránku http://maxpromer.github.io/LCD-Character-Creator/ a naklikejte si znak.

Vlastní znak na LCD displeji

Vedle v boxu se v reálném čase mění pole, konkrétně se mění 1 a 0. 1 je na místě, kde má pixel svítit a 0 je na místě, kde pixel svítit nemá. Výsledný program pro Arduino bude vypadat takto:

 

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// definování vlastního znaku, pomocí pixelů (1 - svítí, 0 - nesvítí)
byte teplomer[8] =                    
{            
  B00100,           
  B01010,           
  B01010,           
  B01010,           
  B01010,           
  B10001,           
  B10001,           
  B01110,            
};   

void setup()
{
  // vytvoření znaku
  lcd.createChar(1, teplomer);     
  lcd.begin(20, 4);
  lcd.setCursor(0, 0);
  lcd.print("nas znak: ");
  // vypíše náš znak
  lcd.write(byte(1));              
}

void loop()
{
}

 

Příklad zobrazení vlastního znaku na LCD displeji

pár rad na konec

LCD displej je velmi užitečná součástka, která najde své uplatnění v mnoha Arduino projektech. Ukázali jsem si pouze základní funkce, se kterými si časem asi nevystačíte, proto se podívejte také do „examples“ v Arduino IDE. Zajímavý tip je například užitečná funkce lcd.clear(). Pokud budete tápat, podívejte se na ostatní návody, kde se LCD hojně vyskytuje a uvidíte, jak funguje v praxi. Také se můžete zeptat v sekci komentářů pod tímto Arduino návodem. Rozhodně se nevzdávejte, výsledek za to stojí a LCD displej si vaši pozornost rozhodně zaslouží.

Bastlení ZDAR!

Soubory ke stažení pro bastlení s displejem