Вы напэўна чулі пра Мікрасхема PCF8574, мікрасхема, якую можна набыць асобна альбо ўжо ўсталяваць на модуль, як і многія іншыя Электронныя кампаненты каб палегчыць вашу інтэграцыю з вашай платай Arduino. У гэтым выпадку гэта пашыральнік ўваходаў і выхадаў для аўтобус I2C.
Вы можаце падумаць, што Arduino ўжо мае сваё інтэграваная шына I2C, і гэта праўда. Але PCF8574 можа дапамагчы пашырыць гэтую шыну за межы вашай платы распрацоўкі, што можа быць вельмі карысна некаторым вытворцам, якія маюць патрэбу не толькі ў тым, што прадастаўляецца Arduino.
Што такое шына I2C?
Назва I2C паходзіць ад Інтэгральная схема альбо інтэгральныя мікрасхемы. Яго версія 1.0 была створана ў 1992 годзе кампаніяй Philips. Тады другі 2.1 з'явіцца ў 2000 годзе, і сёння ён стаў стандартам (са хуткасцю 100 кбіт / с, хаця дазваляе максімум да 3.4 Мбіт / с), калі тэрмін дзеяння патэнта скончыўся ў 2006 годзе, і ім можна карыстацца свабодна.
У цяперашні час ён шырока выкарыстоўваецца ў прамысловасці для зносін, а таксама вельмі высока ацэнены вытворцамі за іх праекты па сувязі розных мікракантролераў і перыферыйных прылад, інтэграваных у адну ІС.
El I2C - гэта аўтобус добра вядомы з паслядоўнай сувязі. Ён выкарыстоўвае сінхронны пратакол сувязі толькі з 2 каналамі (ёсць трэці, але ён звязаны са спасылкай або GND), на самай справе ён таксама вядомы як TWI (двухправодны інтэрфейс):
- Адзін для гадзін (SCL).
- Іншае для дадзеных (SDA).
Гэта азначае, што гаспадар і раб яны адпраўляюць дадзеныя па адным і тым жа кабелі альбо дарожцы, якая кіруецца першай, якая генеруе сігнал тактавай частоты. Кожнаму з перыферыйных прылад, падлучаных да шыны I2C, будзе прызначаны унікальны адрас для таго, каб накіроўваць перадачы. Але неабавязкова, што настаўнік заўсёды адзін і той жа (мульты-настаўнік), ён заўсёды ініцыюе перавод.
Як я ўжо тлумачыў у артыкуле пра Arduino I2C Я спасылаўся раней, кожная плата мае гэтыя злучэнні I2C у розных месцах. Гэта трэба мець на ўвазе, каб мець магчымасць правільна выкарыстоўваць яго ў кожнай версіі пласціны:
- Arduino UNO: SDA ў фармаце A4 і SCK ў A5
- ArduinoNano: тое самае, што і папярэдняе.
- Arduino MiniPro: тое самае.
- Arduino мега: SDA на кантакце 20 і SCK на 21.
- Больш інфармацыі пра таблічкі.
Вы ўжо ведаеце, што вы можаце лёгка выкарыстоўваць I2C для сваіх эскізаў, так як Бібліятэка Wire.h з рознымі функцыямі для гэтай паслядоўнай сувязі:
- пачаць (): запусціце правадную бібліятэку і ўкажыце, калі яна з'яўляецца галоўнай або падпарадкаванай
- requestFrom (): выкарыстоўваецца майстрам для запыту дадзеных у раба.
- beginTransmission (): пачаць перадачу з раба.
- endTransmission (): канчатковая перадача.
- напісаць ()- Запішыце дадзеныя ад раба ў адказ на запыт ад майстра, альбо вы можаце паставіць у чаргу перадачу майстра.
- даступна (): верне колькасць байтаў для чытання.
- чытаць (): прачытаць байт, які перадаецца ад падлеглага вядучаму ці наадварот.
- onReceive (): Выклікае функцыю, калі падпарадкаваны атрымлівае перадачу ад вядучага.
- onRequest (): Выклікае функцыю, калі падпарадкаваны запытвае дадзеныя ў майстра.
да больш інфармацыі пра праграмаванне і функцыі Arduino вы можаце загрузіць нашы Падручнік PDF.
Што такое PCF8574?
PCF8574 з'яўляецца Пашыральнік лічбавых уваходаў і выхадаў (I / O) шыны I2C. Ён можа вырабляцца рознымі вытворцамі, акрамя таго, што ён даступны ў ІС і модулях. У любым выпадку вельмі практычна падключыць яго да платы Arduino і мець магчымасць кіраваць большай колькасцю прылад, чым дазваляе мацярынская плата.
El PCF8574 распіноўка проста, бо ўключае толькі 8 хвоі квазінакіраваны (P0-P7, дзе падключаны мікрасхемы для сувязі), а з іншага боку, у вас ёсць SDA і SCL, якія вы павінны падключыць да платы Arduino, а таксама VCC і GND для харчавання модуля. І не забудзьцеся пра тры адрасныя кантакты A0, A1, A2, каб выбраць, на якую з прылад накіроўваецца сувязь ...
Валодае іншыя асаблівасці што вы павінны ведаць:
- Яе злучэння, будучы адкрытым каналізацыяй, могуць быць выкарыстоўваецца і як уваход, і як выхад.
- La пікавы ток гэта 25 мА, калі ён дзейнічае як выхад (пагружальнік, калі ток ідзе да PCF8574), і 300 мкА (крыніца, ток ідзе ад PCF8574).
- La напружанасць крыніца харчавання складае 2.5 і 6v. Спажыванне ў рэжыме чакання вельмі нізкае, усяго 10 мкА.
- Усе выхады мець зашчапкі, каб падтрымліваць стан без неабходнасці знешніх дзеянняў. Дзейнічаць трэба толькі тады, калі вы хочаце змяніць стан.
- Вы можаце атрымаць 8 магчымыя напрамкі, гэта значыць да 8 прылад для сувязі альбо з выкарыстаннем 8 модуляў для яго пашырэння да 64 прылад. Адрасы (кантакты A0, A1, A2) будуць:
- 000: адрас 0x20
- 001: адрас 0x21
- 010: адрас 0x22
- 011: адрас 0x23
- 100: адрас 0x24
- 101: адрас 0x25
- 110: адрас 0x26
- 111: адрас 0x27
- Прызнаецца перапыненне (INT) спецыяльнай лініяй для выяўлення дадзеных без пастаяннага кантролю.
Інтэграцыя з Arduino
Злучэнне з Arduino вельмі простае, вам проста трэба падключыць Vcc 5-кантактным штыфтам платы Arduino, а GND - GND Arduino. З іншага боку, штыфты модуля SDF і SCL PCF8574 могуць быць злучыце шпількамі 14 (A5 SCL) і 15 (A4 SDA). Толькі з гэтым ён пачне працаваць, відавочна, вы можаце выкарыстоўваць Px для падлучэння прылад, з якімі вы хочаце звязацца ...
Тады яго толькі не хапала б пачніце з прыкладу эскіза у IDE Arduino. Вы можаце зрабіць гэта, не выкарыстоўваючы дадатковую бібліятэку, такую як ...
#include <Wire.h> const int address = 0x38; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { for (short channel = 0; channel < 8; channel++) { // Escribir dato en cada uno de los 8 canales Wire.beginTransmission(address); Wire.write(~(1 << channel)); Wire.endTransmission(); // Lee dato del canal delay(500); } }
У якасці ўваходных дадзеных:
#include <Wire.h> const int address = 0x38; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { short channel = 1; byte value = 0; // Leer el dato del canal Wire.requestFrom(pcfAddress, 1 << channel); if (Wire.available()) { value = Wire.read(); } Wire.endTransmission(); // Mostrar el valor leido por el monitor serie Serial.println(value); }
Ці таксама карыстацца бібліятэкамі, такія як PCF8574, якія вы можаце спампаваць тут і выкарыстоўваць код, аналагічны гэтаму з самога прыкладу, які ідзе разам з гэтай бібліятэкай:
#include <Wire.h> #include "PCF8574.h" PCF8574 expander; void setup() { Serial.begin(9600); expander.begin(0x20); /* Setup some PCF8574 pins for demo */ expander.pinMode(0, OUTPUT); expander.pinMode(1, OUTPUT); expander.pinMode(2, OUTPUT); expander.pinMode(3, INPUT_PULLUP); /* Blink hardware LED for debug */ digitalWrite(13, HIGH); /* Toggle PCF8574 output 0 for demo */ expander.toggle(); /* Blink hardware LED for debug */ digitalWrite(13, LOW); } void loop() { }
Будзьце першым, каб каментаваць