Jak jsme popsali v části věnované I²C komunikaci, musí mít každé zařízení připojené ke sběrnici s tímto způsobem komunikace, určenou jednoznačnou adresu. Bohužel je to jedna z oblastí, kde občas dokumentace k některým čidlům chybí. Abychom tuto adresu mohli u jednotlivých periférií zjistit nebo jen ověřit, ukážeme si, jak naskenovat a zobrazit adresy všech zařízení připojených na sběrnici I²C.
Jak bylo řečeno, každé zařízení s I²C sběrnicí má adresu I²C, kterou používá k přijímání příkazů nebo odesílání zpráv. Pojďme si ukázat, jak najít adresu na příkladu I²C převodníku pro LCD displej. Princip hledání je poměrně jednoduchý, ale zato účinný. Postupně jsou na sběrnici I²C oslovovány adresy z daného rozsahu. Pokud je na sběrnici přítomna nějaká periférie dané adresy, odpoví. Pokud volání skončí chybou, periférie dané adresy na sběrnici není.
Dále vytvořený program bude zobrazovat 7-bitové adresy nalezených zařízení v hexadecimální podobě. Každé nalezené zařízení na sběrnici I²C bude vypsáno na sériový monitor. Pro možné vyzkoušení funkčnosti programu je možné jednotlivé I²C zařízení zapojovat a odpojovat i za běhu programu.
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. V tomto příkladu je sice použit displej s I²C převodníkem, ale jak jsme si říkali v popisu I²C sběrnice, vývody SDA
a SCL
jsou podstatou komunikace na všech I²C perifériích. A protože modul Arduino UNO využívá komunikace I²C jen na pinech A4
a A5
, je i připojení na straně modulu Arduino vždy shodné s následující tabulkou.
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. Zatímco v předchozích programech byly programy někdy i vcelku rozsáhlé, zde díky rozšíření MAXI Starter kit jde dva programové bloky.
Program lze stáhnout z:
http://
V programu jsme využili programový blok, který je do prostředí mBlock přidán díky rozšíření MAXI Starter kit. Tento jediný programový blok skenuje sběrnici I²C a hledá připojená zařízení, pokud nějaké zařízení nalezeno, je jeho adresa vypsána v sériovém monitoru. To je vše! 😎
Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem .
Krok 4: Nyní modul Arduino odpojíme od prostředí mBlock pomocí tlačítkem . USB kabel modulu Arduino ale od počítače neodpojujeme!
Krok 5: Spustíme na počítači aplikaci Serial Monitor. V Serial Monitoru vybereme port, na které je náš modul Arduino (např. COM5) připojen a nastavíme komunikační rychlost na hodnotu 115200 baudů. Na závěr se tlačítkem „Connect“ připojíme k modulu Arduino. Objeví se okno sériového monitoru, ve kterém bychom měli vidět seznam všech zařízení připojených ke sběrnici I²C i s jejich adresou v hexadecimální podobě.