Интерфейс I2C и Arduino

Съдържание:

Интерфейс I2C и Arduino
Интерфейс I2C и Arduino

Видео: Интерфейс I2C и Arduino

Видео: Интерфейс I2C и Arduino
Видео: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, Април
Anonim

В тази статия ще разгледаме какво представлява интерфейсът I2C (ay-tu-si, i-two-tse), какви са неговите характеристики и как се работи с него.

I2c интерфейс
I2c интерфейс

Необходимо е

  • - Arduino;
  • - цифров потенциометър AD5171;
  • - Светодиод;
  • - резистор 220 ома;
  • - 2 резистора за 4.7 kOhm;
  • - свързващи проводници.

Инструкции

Етап 1

Протоколът за последователна комуникация IIC (наричан още I2C - Inter-Integrated Circuits) използва две двупосочни комуникационни линии за прехвърляне на данни, наречени SDA (Serial Data) шина и SCL (Serial Clock) шина. Има и две електропроводи. SDA и SCL шините се изтеглят към силовата шина чрез резистори.

Има поне един главен в мрежата, който инициира предаване на данни и генерира сигнали за синхронизация. Мрежата също има подчинени, които предават данни по искане на главния. Всяко подчинено устройство има уникален адрес, на който главният го адресира. Адресът на устройството е посочен в паспорта (лист с данни). Към една I2C шина могат да бъдат свързани до 127 устройства, включително няколко главни. Устройствата могат да бъдат свързани към шината по време на работа, т.е. поддържа горещо включване.

Схема за свързване на I2C
Схема за свързване на I2C

Стъпка 2

Arduino използва два порта за работа по интерфейса I2C. Например в Arduino UNO и Arduino Nano аналоговият порт A4 съответства на SDA, аналоговият порт A5 съответства на SCL.

За други модели дъски:

Arduino Pro и Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Ардуино Леонардо - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Картографиране на Arduino щифтове към SDA и SCL шини
Картографиране на Arduino щифтове към SDA и SCL шини

Стъпка 3

За да се улесни обменът на данни с устройства през I2C шината, за Arduino е написана стандартна библиотека "Wire". Той има следните функции:

начало (адрес) - инициализация на библиотеката и свързване към I2C шината; ако не е посочен адрес, тогава свързаното устройство се счита за главно; Използва се 7-битово адресиране;

requestFrom () - използва се от главното устройство, за да поиска определен брой байтове от подчиненото устройство;

beginTransmission (адрес) - началото на прехвърляне на данни към подчиненото устройство на определен адрес;

endTransmission () - прекратяване на предаването на данни към подчиненото;

write () - запис на данни от подчинения в отговор на заявка;

available () - връща броя байтове информация, достъпна за получаване от подчиненото устройство;

read () - чете байт, прехвърлен от подчинения към главния или от главния към подчинения;

onReceive () - показва функцията, която трябва да се извика, когато подчиненият получи предаване от главния;

onRequest () - Показва функция, която да бъде извикана, когато главното устройство получи предаване от подчиненото устройство.

Стъпка 4

Нека да видим как да работим с I2C шината, използвайки Arduino.

Първо, ще съберем веригата, както е показано на фигурата. Ще контролираме яркостта на светодиода, използвайки AD5171 64-позиционен цифров потенциометър, който се свързва към I2C шината. Адресът, на който ще се позоваваме на потенциометъра, е 0x2c (44 в десетична запетая).

LED контролна схема, използваща цифров потенциометър и Arduino
LED контролна схема, използваща цифров потенциометър и Arduino

Стъпка 5

Сега нека отворим скица от примерите на библиотеката "Wire":

Файл -> Проби -> Тел -> цифров_потенциометър. Нека го заредим в паметта на Arduino. Да го включим.

Виждате ли, яркостта на светодиода се повишава циклично и след това изведнъж изгасва. В този случай ние контролираме потенциометъра с помощта на Arduino през I2C шината.

Препоръчано: