Pripojenie viacerých počítačov Arduinos - Ako prenášať údaje
Môže sa stať, že chcete pripojiť niekoľko Arduinos. Existuje niekoľko možností. Pripojenie cez rozhranie I2C je veľmi pohodlné. Ako na to, sa dozviete tu.

I2C znamená Inter-Integrated Circuit a vyslovuje sa I-Square-C alebo I-To-C. Toto je štandard pôvodne vyvinutý spoločnosťou Philips pre komunikáciu medzi rôznymi integrovanými obvodmi (integrované obvody). Jeden IC, hlavný, by mal prevziať kontrolu nad rôznymi periférnymi IC. Tento postup je známy ako zbernica typu master-slave.
I2C potrebuje iba dve dátové linky: SCL, sériové hodiny (Serial Clock Line) a SDA, sériové dátové linky (Serial Data Line). Doska Arduino je ním už našťastie vybavená. Pin SDA je analógový vstup 4, konektor SCL je analógový vstup 5. Okrem toho sú piny na Arduino UNO R3 vyvedené tiež na ľavej strane digitálnych pinov. Ide však o rovnaké pripojenia ako A4 a A5.
Ako už bolo spomenuté, I2C je systém typu master-slave. To znamená, že jedna z dosiek Arduino sa musí stať pánom. Všetky ostatné dosky Arduino dostávajú svoju vlastnú adresu.
Pripojenie niekoľkých Arduinos: schéma zapojenia
V podstate všetky dosky Arduion spájajú piny A4 a A5, ako aj GND. Okrem toho by mali byť pripojené dva odpory ako prípojky pre vedenia SDA a SCL.
Arduinos je možné napájať buď zo samostatných zdrojov napájania, alebo z USB napájania, alebo z výkonného externého zdroja. Odporúčam nepoužívať napájaciu zásuvku Arduina, pretože dióda tu obmedzuje maximálny prúd na jeden ampér. S mnohými Arduinos sa dá rýchlo prekonať. Je však nevyhnutné zabezpečiť pri tomto type činnosti správnu polaritu!
Pripojte niekoľko Arduinos: hlavný kód
Aby bolo možné používať rozhranie I2C, musí byť integrovaná knižnica Wire: include Wire bol predchodcom Arduina a funkčnosť I2C je obsiahnutá v tejto knižnici. Tento kód v zásade pozostáva z dvoch hlavných funkcií: odosielania a prijímania údajov.
V slučke je slučka for. Pri každom spustení sa komunikuje ďalšia pripojená doska Arduino. Funkcia sendData sa volá ako prvá v cykle for. Ako parametre dostane cieľovú adresu, dosku príjemcu a hodnotu od 0 do 255. Toto sú vzorové údaje, ktoré môže príjemca vyhodnotiť.
Potom sa volá funkcia receiveData. Cieľová adresa sa prenesie znova. V samotnej funkcii sa najskôr pošle požiadavka na prijímaciu dosku. (Kapitán musí tieto požiadavky odoslať pripojeným Arduinom, aby bolo možné údaje odoslať späť.) Teraz sú požadované dva dátové balíčky. Každá z nich musí byť v rozsahu hodnôt 0 až 255 (t. J. BYTE). Sú prenesené do viacrozmerného poľa, ktoré je možné neskôr použiť v programe. Tu je potrebné ho chápať iba ako príklad. Oba dátové pakety sa stále prenášajú do sériového rozhrania a je možné ich skontrolovať na sériovom monitore.
Teraz sa pozrime, ako to vyzerá na druhej strane: V podradených moduloch.
Pripojte viac modulov Arduinos: slave
Podľa očakávania je tento kód skôr pasívny a čaká na správu od nadriadeného. V nastavení sú prepojené dve udalosti:
Funkcia receiveEvent sa volá, keď sú prijaté dáta. V ňom sa prijaté dáta jednoducho zapíšu do premennej x. LED na kolíku 13 potom bliká presne tak často, ako veľká je premenná x. Opäť len ukážková.
Funkcia requestEvent sa vykoná, keď hlavný server požaduje údaje. Zapíše do poľa dve údaje: svoju vlastnú adresu a aktuálnu hodnotu na analógový pin 0. Pretože je táto hodnota v rozmedzí od 0 do 1023, je rozdelená štyrmi, aby sa mohla preniesť do cieľového rozsahu od 0 do 255 (BYTE).
Je dôležité, aby každá podradená doska Arduino mala svoju vlastnú adresu. Pripojil som sem štyroch otrokov Arduina a očísloval ich od 2 do 5.
Mimochodom, 112 dosiek Arduino by malo byť možné ľahko pripojiť a vyriešiť.
A teraz by ma veľmi zaujímalo, čo s tým robíš. Pokojne to napíšte do komentárov:-)
Na záver existuje skutočne veľmi vzrušujúca diskusia o tom, či sú pojmy pán a otrok stále vhodné. Mne osobne pripadá zrozumiteľné a veľmi zábavné čítať niekedy veľmi polarizujúce komentáre.