Lekce 10 - Arduino a I2C - LCD

11.03.2013 14:20

V 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:

  1. Vcc
  2. GND
  3. V0 - nastavení kontrastu displeje
  4. RS
  5. RW
  6. E
  7. D0
  8. D1
  9. D2
  10. D3
  11. D4
  12. D5
  13. D6
  14. D7
  15. podsvětlení Vcc
  16. 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  :

 

  void clear();
  void home();
  void noDisplay();
  void display();
  void noBlink();
  void blink();
  void noCursor();
  void cursor();
  void scrollDisplayLeft();
  void scrollDisplayRight();
  void printLeft();
  void printRight();
  void leftToRight();
  void rightToLeft();
  void shiftIncrement();
  void shiftDecrement();
  void noBacklight();
  void backlight();
  void autoscroll();
  void noAutoscroll(); 
  void createChar(uint8_t, uint8_t[]);
  void setCursor(uint8_t, uint8_t); 
  virtual size_t write(uint8_t);
  void command(uint8_t);
 
Myslím, že již z angličtiny poznáte k čemu slouží, tak je na váš, které si vyzkoušíte a použijete ve svém vlastním programu. V dalším díle si ještě ke sběrnici I2C připojíme modul reálného času a tím vlasně s diplejem postavíme funkční digitální hodiny :-) .
 

Zdrojový kód a potřebné soubory najdete všechny zde.

 

 

 

Zpět

Diskusní téma: Lekce 10 - Arduino a I2C - LCD

Datum
Vložil
Titulek

Re: Zobrazuje se pouze 1. znak

Me pomohlo aktualizace knihoven lcd pouzil jsem ze sranek robodoupe

Datum
Vložil
Titulek

Display nefunguje

Ahoj mám I2C sběrnici, ale po zapojení vidím na displayi jen velmi tmavé čtverce, které skoro nejsou rozeznat od pozadí. Všude na internetu píšou, že se musí pohrát s potenciometrem, ale já ho na tom displayi prostě nemám. Můžete někdo poradit?

Datum
Vložil
Titulek

Re: Display nefunguje

ten by měl být na tom modulu I2C

Datum
Vložil
Titulek

Lekce 10

Krásně napsáno - akorád to nefunguje.

Datum
Vložil
Titulek

L2C nekomunikuje

Nevíte proč mi vůbec nesvítí displej? Rozsvítí se jenom po připojení napájení i na levé straně L2C místo bridge propojení k pinu LED.

Datum
Vložil
Titulek

otáčení trimru

Ahoj, mám stejný modul jako autor. Po zapojení se mi jen rozsvítil displej a text nebyl vidět. Zkoušel jsem otáčet trimr o 2-3 otáčky a stále nic. Po zapojení druhého identického modulu bylo vidět jen hodně tmavé kontury písma. Aby bylo písmo čitelné, musel jsem trimrem otočit min. 10x. U prvního modulu bylo potřeba cca. 20 otáček. Třeba tato zkušennost někomu ušetří pár hodin času.

Datum
Vložil
Titulek

Re: otáčení trimru

diki pomohlo už som si myslel že mi to vobec nepojde po 8 hodinach testovania a nefunkčnosti som bol už zufaly, a to sa hram so 4 roznymi displejmi.
diki

Datum
Vložil
Titulek

modul spínačů

dobrý den,
prosím nezníte někdo nějaký modul na který napojím třeba 8 spínačů a on mi do arduina bude přes I2C informace o stavech přepínačů (zapnuto/vypnuto) ?
děkuji

Datum
Vložil
Titulek

arduino nano

dobrý den,
na jakých výstupech má arduino nano výstupy pro I2C sběrnici ?
Děkuji za odpověď.

Datum
Vložil
Titulek

Re: arduino nano

jsou popsaný zezadu SDA a SCL (mám rev3, nevím jestli je to tak u všeh)

<< 2 | 3 | 4 | 5 | 6 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.