Поврзување на повеќе Arduinos - Како да пренесувате податоци

Може да се случи да сакате да поврзете неколку Arduinos. Постојат неколку можности за ова. Врската преку I2C интерфејс е многу лесна. Можете да дознаете како да го направите ова овде.

arduinos

I2C се залага за Интер-интегрирано коло и се изговара I-Square-C или I-To-C. Ова е стандард првично развиен од Philips за комуникација помеѓу различни IC (интегрални кола). Еден ИЦ, господар, треба да преземе контрола над различните периферни ИЦ. Оваа постапка е позната како автобус господар-роб.

На I2C му требаат само две линии на податоци: SCL, серискиот часовник (сериска линија на часовник) и SDA, сериската линија на податоци (сериска линија на податоци). За среќа, таблата Arduino е веќе опремена со неа. SDA-пинот е аналоген влез 4, SCL-пинот е аналоген влез 5. Покрај тоа, игличките на Arduino UNO R3 се исто така изнесени на левата страна од дигиталните пинови. Сепак, ова се истите врски како А4 и А5.

Како што споменавме, I2C е систем на господар-роб. Тоа значи дека една од таблите на Arduino треба да стане господар. Сите други табли на Arduino добиваат своја адреса.

Поврзете неколку дијаграми Arduinos: коло

Во основа, сите плочи Arduion ги поврзуваат пиновите А4 и А5, како и GND. Покрај тоа, два отпорници треба да бидат поврзани како повлекувачи за линиите SDA и SCL.

Arduinos може или да се снабдува преку посебни напојувања или USB напојување или преку моќно надворешно напојување. Јас советувам да не се користи штекер за напојување на Arduino, бидејќи диодата овде го ограничува протокот на максимална струја до еден ампер. Со многу Arduinos можете брзо да го преболите. Сепак, од суштинско значење е да се обезбеди правилен поларитет со овој вид на работа!

Поврзете неколку Arduinos: Master Code

За да може да се користи интерфејсот I2C, библиотеката со жици мора да биде интегрирана: вклучете ја Wire беше претходник на Arduino и функционалноста I2C е содржана во оваа библиотека. Кодот во основа е составен од две главни функции: испраќање податоци и примање податоци.

Во јамката има јамка за. Со секое извршување, се комуницира друга поврзана табла Arduino. Функцијата sendData се повикува прво во јамката за. Како параметри ги добива целната адреса, табличката на приматели и вредноста помеѓу 0 и 255. Ова е примерок од податоци што може да ги процени примателот.

Тогаш се повикува функцијата применаДата. Целната адреса повторно се пренесува. Во самата функција, прво се испраќа барање до таблата за примање. (Мајсторот мора да ги испрати овие барања до поврзаниот Arduinos за да можат податоците да бидат испратени назад.) Сега се бараат два пакети со податоци. Секој мора да биде во опсегот на вредности од 0 до 255 (т.е. BYTE). Тие се пренесуваат во повеќедимензионална низа што може да се користи подоцна во програмата. Тука треба само да се разбере како пример. И двата пакета податоци сè уште се пренесуваат на серискиот интерфејс и може да се проверат во серискиот монитор.

Сега да погледнеме како изгледа од другата страна: Во робовите модули.

Поврзете повеќе Arduinos: код за робови

Како што се очекуваше, овој код е прилично пасивен и чека порака од господарот. Два настани се поврзани во поставувањето:

Функцијата receiveEvent се повикува кога се примаат податоците. Во него, добиените податоци едноставно се запишуваат во променливата x. ЛЕР-от на игла 13 тогаш трепка точно толку често колку што е голема променливата x. Повторно само примерен.

Функцијата requestEvent се извршува кога господарот бара податоци. Запишува два податоци во низа: своја адреса и моментална вредност на аналогниот пин 0. Бидејќи оваа вредност е во опсег од 0 до 1023, таа е поделена со четири за да се пренесе во целниот опсег од 0 до 255 (BYTE).

Важно е секој одбор на робот Ардуино да има своја адреса. Јас тука поврзав четири робови Ардуино и ги нумерирав од 2 до 5.

Патем, 112 табли Arduino треба да можат лесно да се поврзат и адресираат.

И сега би бил многу заинтересиран за тоа што правиш со тоа. Слободно пишете го тоа во коментарите:-)

Како заклучок, всушност постои многу возбудлива дискусија за тоа дали поимите господар и роб се сепак соодветни. Јас лично сметам дека е разбирливо и многу забавно да ги читам понекогаш многу поларизирачките коментари.