Бул макалада I2C интерфейси (ay-tu-si, i-two-tse) деген эмне, анын кандай өзгөчөлүктөрү бар жана аны менен кантип иштөө керектигин карайбыз.
Ал зарыл
- - Arduino;
- - санарип потенциометр AD5171;
- - Жарык чыгаруучу диод;
- - 220 ом резистор;
- - 4,7 кОм үчүн 2 резистор;
- - зымдарды туташтыруу.
Нускамалар
1 кадам
IIC сериялуу байланыш протоколу (I2C - Интер-Интегралдык микросхемалар деп да аталат) SDA (Serial Data) автобус жана SCL (Serial Clock) автобус деп аталган эки тараптуу байланыш линияларын колдонуп, маалыматтарды өткөрүп берет. Ошондой эле эки электр чубалгысы бар. SDA жана SCL автобустары резистор аркылуу кубат автобусуна тартылат.
Тармакта жок дегенде бир Мастер бар жана ал маалыматтарды берүүнү баштайт жана синхрондоштуруу сигналдарын жаратат. Тармакта ошондой эле кожоюндун суранычы боюнча маалыматтарды өткөрүп берүүчү кулдар бар. Ар бир кул түзмөктүн уникалдуу дареги бар, анда кожоюн кайрылат. Түзмөктүн дареги паспортто (маалымат баракчасында) көрсөтүлгөн. Бир I2C автобусуна 127ге чейин шаймандарды туташтырууга болот, алардын ичинде бир нече мастерлер бар. Шаймандарды автобуска иштетүү учурунда туташтырса болот, б.а. ал ысык туташтырууну колдойт.
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 улам - 20 (SDA), 21 (SCL), SDA1, SCL1
3-кадам
I2C автобус аркылуу түзмөктөр менен маалымат алмашууну жеңилдетүү үчүн Arduino үчүн стандарттуу "Wire" китепканасы жазылган. Анын төмөнкү функциялары бар:
баштоо (дарек) - китепкананын инициализациясы жана I2C шинасына туташуу; эгер эч кандай дарек көрсөтүлбөсө, анда туташкан шайман башкы деп эсептелет; 7-биттик даректөө колдонулат;
requestFrom () - кожоюн кулдан белгилүү бир сандагы байт сураш үчүн колдонот;
beginTransmission (дарек) - белгилүү бир дарек боюнча кул түзмөгүнө маалыматтарды берүү башталат;
endTransmission () - кулга маалымат берүүнү токтотуу;
write () - сурамга жооп катары кулдан маалыматтарды жазуу;
available () - кулдан алуу үчүн жеткиликтүү маалыматтын байт санын кайтарып берет;
окуу () - кулдан кожоюнга же кожоюндан кулга өткөн байтты окуу;
onReceive () - кул кожоюндан берүүнү алганда чакырыла турган функцияны көрсөтөт;
onRequest () - кожоюн кулдан берүүнү кабыл алганда чакырыла турган функцияны көрсөтөт.
4-кадам
Arduino колдонуп I2C автобус менен кантип иштөөнү карап көрөлү.
Алгач, сүрөттө көрсөтүлгөндөй, схеманы чогултабыз. Биз I2C автобусуна туташкан AD5171 64 позициялуу санарип потенциометрин колдонуп, диоддун жарыктыгын көзөмөлдөйбүз. Потенциометрге кайрыла турган дарек 0x2c (ондук менен 44).
5-кадам
Эми "Сым" китепканасынын мисалдарынан эскиз ачалы:
Файл -> Үлгүлөр -> Зым -> санарип_потенциометр. Келгиле, аны Arduino эс тутумуна жүктөйбүз. Аны күйгүзөлү.
Көрдүңүзбү, светодиоддун жарыгы цикл менен көтөрүлүп, анан күтүүсүздөн өчүп калат. Бул учурда, биз Arduino аркылуу I2C автобус аркылуу потенциометрди башкарабыз.