Jak už jsme viděli některých předešlých v lekcích, jakékoliv zobrazovače výrazně obohacují naší interakci s řídicím modulem. Zároveň jsme ale narazili i na jednu nevýhodu. Pokud připojíme nějaký zobrazovač ke kontroléru, může tím být obsazeno poměrně velké množství vstupně-výstupních portů, kterých je zpravidla na řídicím modulu omezený počet. Na druhu stranu jsme ale pak viděli, že lze zobrazovače kombinovat s pomocnými obvody a náročnost na počet řídicích portů se tím může výrazně zredukovat. V případě ovládání našeho LCD displeje je potřeba řídicích pinů hned 16. A právě důvodů snížení počtu ovládacích vodičů a pinů byl vyvinut převodník se I²C sběrnicí, který použijeme pro řízení LCD displeje a který daný problém vyřeší.
Přední část displeje
(nahoře vidíme 16 ovládacích pinů)
I²C převodník, který lze připojit na řidicí piny, tak je zpravidla rovnou připájen na rubové straně displeje
Sada Arduino MAXI Starter kit obsahuje LCD displej, ke kterému je na zadní straně připojený I²C převodník, takže lze displej řídit pomocí jen dvou datových vodičů. Modrý potenciometr (viz obrázek) na převodníky se používá k nastavení podsvícení.
V této lekci si zkusíme základní ovládání LCD displeje. Řízení nám značným způsobem ulehčí programové bloky, které do prostředí mBlock opět přidá rozšíření MAXI Starter kit. Pro začátek v tomto experimentu necháme na displeji zobrazit následující texty: „Laskarduino“ a „Zdravim bastlire!“. Použitá LCD displej LCD1602 je doplněný I²C převodníkem. U displeje nebudeme řídit jednotlivé pixely, ale odešleme na něj text, jehož zobrazení zařídí podpůrné obvody. Displej pro nás bude tedy prostorem, kde budeme mít možnost zobrazit dva řádky textu po šestnácti znacích (odtud i označení displeje LCD1602).
Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. Spojení mezi displejem I²C LCD1602 a modulem Arduino znázorňuje následující tabulka.
Blokové schéma
Elektronické schéma
I²C LCD1602 | modul Arduino | |
---|---|---|
UNO | Mega | |
SDA | A4 | 20 |
SCL | A5 | 21 |
UCC | 5V | 5V |
GND | GND | GND |
Krok 2: V prostředí mBlock vytvoříme následující program. V programu jsou použity příkazové bloky rozšíření MAXI Starter kit pro obsluhu I²C LCD (modrozelené bloky), které mají jako jeden ze svých vstupních parametrů adresu použitého I²C převodníku pro displej. Každý příkaz provedený na I²C periférii musí být vždy řádně adresován. Proto je potřeba při tvorbě programu znát a přesně zadat adresu použitého I²C LCD displeje. Obvykle bývá adresa převodníku pro displej 0x27
, ale v sadě, podle které vznikal tento text, byla zrovna adresa převodníku 0x3F
. Každý uživatel musí u příkazů pro LCD nastavit aktuální adresu dle své situace, a to u všech bloků. (viz rozbalovací pole „adr.“).
Program lze stáhnout z:
http://
V úvodní části programu jsou nastaveny parametry použitého LCD displeje, tedy rozměr 16 sloupců a 2 řádky. Dále je nastaveno zapnutí podsvícení. Pro fungující LED podsvícení displeje musí být na displeji propojena zkratovací spojka (jumper). Dále je nastaven skrytý kurzor. V hlavní nekonečné smyčce „opakuj stále“ jsou za sebou zařazeny dva cykly, s pevně daným opakováním (16×). Oba cykly dělají de facto to samé. Na začátku je nastavena ho proměnné positionCounter1
hodnota 16, která odpovídá poslednímu sloupci displeje. Pak je na tuto pozici vyprán zadaný nápis. V prvním cyklu jde o text „Laskarduino_“ (podtržítko znázorňuje mezeru) a je vypisován na první řádku. V druhém cyklu je zobrazován text „Zdravime bastliře!_“ (podtržítko opět znázorňuje mezeru) a je text vypisován na druhou řádku. Daný text je zobrazen na půl vteřiny, pak je proměnná positionCounter1
zmenšena o jedničku a cyklus se začíná opakovat. Text je tedy vypsán o jednu pozici vlevo, což vyvolává efekt „přijíždějícího“ textu směrem zprava. Po šestnácti krocích text dorazí až na levý okraj displeje. Mezera na konci textů je důležitá, slouží jako mazač posledních znaků posouvajícího se textu.
Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem .
Krok 4: Nyní bychom na svém LCD displeji měli postupně vidět nápisy „Laskarduino“ a „Zdravim bastlire!“ Pokud na displeji není nic vidět, je třeba zkontrolovat nastavení odporového trimru (zadní strana I²C převodníku) pro řízení kontrastu na převodníku. Může se stát, že je nastavený na minimum a tudíž na displeji není nic vidět. Otáčením si tedy nastavíme správný kontrast, tak aby byl nápis na displeji co nejlépe čitelný.