Lekce 10 - Arduino a I2C - LCD
11.03.2013 14:20V této lekci si ukážeme k čemu nám je dobrá a jak můžeme využít tzv. I2C sběrnici. Tato umožňuje, pomocí 2-vodičového datového propojení, komunikaci mezi jedním nebo více procesory nebo integrovanými obvody s podporou I2C. Nechtěl bych se tady rozepisovat dopodrobna jak celá věc funguje, ale řekneme si o ní pár vět.
Ke sběrnici mohou být připojeny všechy integrované obvody, které zvládají speciální protokol komunikace. K těmto obvodům patří různé paměti, převodníkly D/A a A/D, senzory, obvody reálného času atd. Umožnujě připojení až 128 různých zařízení pomocí jak jsme si už řekli dvou obousměrných vodičů, z nihž jeden je SLC (Synchronous Clock) - hodinový signál a druhý vodič datový kanál SDA (Synchronous Data). Více o této problematice na wikipedi. Naše arduino samozřejmě má podporu této komunikace a již vytvořenou a připravenou knihovnu.
Pro naši ukázku jsem si sehnal několik součástek nebo modulů. V prvním případě si k Arduinu připojíme LCD diplej 16x2 znaků ke kterému jsem si pořídil levný I2C modul který je právě určen pro připojení k těmto druhům displejů. Dá se sehnat do 100 Kč takže za babku.
Na obrázku vidíte obě strany modulu. Jedno 4-pinové připojení pro komunikaci a napájení a dále 16-pinové připojení LCD displeje. Já jsem nechtěl (ač je to již na to připraveno) připájet I2C LCD modul přímo k dipleji, z důvodu možného dalšího připojení k jinému LCD a složitému odpájení.
Na LCD dipleji již jsem měl přípájen hřebínek s piny tak jsem spojil LCD s modulem pomocí malého nepájivého kontaktního pole.
Musíte si dát pozor také na zapojení vývodů LCD. Ne všechny mají zapojeny stejně a modul I2C by vám ve spojení s displejem nefungoval.
Zapojení pinů na modulu:
- Vcc
- GND
- V0 - nastavení kontrastu displeje
- RS
- RW
- E
- D0
- D1
- D2
- D3
- D4
- D5
- D6
- D7
- podsvětlení Vcc
- podsvětlení GND
V případě, že by piny na modulu a LCD nebyly shodné, propojte jej pomocí nepájivého kontaktního pole a propojovacích kabílků. Mě se to shodovalo, takže propojení je přímé. Jak můžete vidět na obrázku nahoře. Nyní nám již zbývá spojit modul s Arduinem. Na Arduinu Mega je sběrnice I2C na pinech 20 (SDA) a 21 (SCL). Opět schéma zapojení není potřeba, vše je jasně popsáno a i napájení modulu je jasné. Sami vidíte, že na Arduinu jsou použiti pouze 2 datové piny - paráda, zbyde spousta volných pinů pro další věci. Po zapnutí se vám může zdát, že nic nevidíte (jako mě), ale pouze stačilo nastavit kontrast pomocí modrého trimru na modulu a nápis se objevil.
Teď k programu. Nejprve si musíme stáhnout knihovnu LiquidCrystal_I2C buď z odkazu na https://playground.arduino.cc nebo odtud. Nakopíruj te si jí do adresáře libraries jako v návodech v minulých tutoriálech. Vlastní zdrojový kód programu je velmi jednoduchý:
Další ukázka programu počítá dokola od 0 do 500:
Další podporované funkce knihovnou LiquidCrystal_I2C :
Zdrojový kód a potřebné soubory najdete všechny zde.
———
ZpětDiskusní téma: Lekce 10 - Arduino a I2C - LCD
Datum | 12.04.2014 |
---|---|
Vložil | Michael |
Titulek | Error |
avrdude: stk500_getsync(): not in sync: resp=0x00
Tohle mi to pise po nahrati kodu.
mam funduino Uno R3
———
Datum | 10.07.2014 |
---|---|
Vložil | tomajstr |
Titulek | Re: Error |
odpoj a zase připoj arduino, když to nepomůže tak vypni a zapni IDE
———
Datum | 01.03.2014 |
---|---|
Vložil | Kempa |
Titulek | Proč............. |
Prosím o radu klidne odepište na emil: smutnacijj@seznam.cz
Propojil jsem LCD a I2c a LCD se ani nerozsviti sviti pouze indikač.led i2c a trimr se protáčí dokola to by asi nemělo ne ?
Děkuji doufam že se dočkám pomoci.
———
Datum | 04.12.2013 |
---|---|
Vložil | Pavel |
Titulek | Druhý display |
Dobrý den, podle schematu, jestli jsemto dobře pochopil lze připojit třeba i 2 displeje, ale nevím jak prozlišit na který se mají zobrazovat data, můžete mi prosím poradit.
Předem moc děkuji.
———
Datum | 10.01.2014 |
---|---|
Vložil | Admin |
Titulek | Re: Druhý display |
To záleží na adresaci zařízení (displeje). Ovšem pokud máte dva totožné I2C displeje budou mít nastaveno stejnou adresu. Budeš muset kouknout na datasheet a pokud to nebude mít adresovací kolíky tak změnit adresovací propojky na desce I2C převodníku připojenou k displeji.
———
Datum | 19.11.2013 |
---|---|
Vložil | Ingrid |
Titulek | svítí, ale nevypisuje |
Dobrý den, chtěla bych se zeptat, zda je možné, že mám nefunkční jen některé výstupy z displeje, protože po připojení displeje k arduinu mega se displej sice rozsvítil, ale ani po otočení trimrem na I2C se nic nevypisuje. Maximálně mi v první řádce ztmavnou/zesvětlají kostičky.
———
Datum | 22.11.2013 |
---|---|
Vložil | Norm |
Titulek | Re: svítí, ale nevypisuje |
Měl jsem naprosto stejný problém, vyřešil jsem takto:
1. Aktuální Arduino IDE (1.0.5)
2. Knihovna LiquidCrystal_I2C odtud https://www.geeetech.com/wiki/index.php/Serial_I2C_1602_16×2_Character_LCD_Module
3. I2C adresa mého LCD je 0x27
———
Datum | 31.12.2013 |
---|---|
Vložil | Ingrid |
Titulek | Re: Re: svítí, ale nevypisuje |
Děkuji za radu. Bohužel ani tohle nepomohlo. Nakonec mi přestalo svítit i podsvícení, ale první řádek bílých kostiček se zobrazuje i bez něj. Bohužel víc se neukáže. Pro jistotu jsem si koupila nový LCD 1602 displej, trochu jiný typ a zapojila ho bez I2C. Protože jsem předchozí I2C měla k displeji připájenou, objednala jsem také novou a úplně stejnou, jako je v odkazu, který jste doporučil. Uvidím, jak to půjde s novou sběrnicí a displejem, pro jistotu už je ale nebudu pájet k sobě.
———
Datum | 06.10.2014 |
---|---|
Vložil | Ondra |
Titulek | Re: Re: svítí, ale nevypisuje |
DÍKY!!!
nebýt Tvého příspěvku, asi svuj display nezprovozním.
opravdu děkuji. ;-)
———
Datum | 14.01.2015 |
---|---|
Vložil | Jirka |
Titulek | Re: Re: svítí, ale nevypisuje |
Měl jsem uplně stejnej problém a toto řešení pomohlo.
děkuji.
Apropo, přijde mi, že ten display má celkem pomalé překreslování? je to tak? nebo mam něco špatně? dá se s tím něco dělat?