Kua rongo ano koe ki nga PCF8574 IC, he maramara ka taea te hoko wehe, kua eke ranei ki runga i te waahanga pera i etahi atu Nga waahanga hiko hei awhina i to whakauru ki to poari Arduino. I tenei keehi, he toro atu i nga whakauru me nga putanga mo te pahi I2C.
Ka whakaaro pea koe kei a koe ano a Arduino pahi I2C whakauru, a he pono. Engari ka taea e te PCF8574 te awhina ki te whakarahi i taua pahi ki tua atu o te rohe o to poari whanaketanga, ka nui pea te awhina ki etahi kaihanga e hiahia ana kia nui ake i ta Arduino e whakarato ana.
He aha te pahi I2C?
Ko te ingoa I2C i ahu mai Huringa Whakawhiti Motuhake nga huringa honohono ranei. Ko tana putanga 1.0 i hangaia i te 1992 e Philips. Ana ka tae mai te tuarua 2.1 i te 2000 ana i tenei ra kua paerewa (i te 100 kbit / s, ahakoa ka eke ki te 3.4 Mbit / s te nuinga) ka pau te mana i te 2006 ka taea te whakamahi noa.
I tenei wa kei te whakamahia whānuitia i roto i te umanga mo te korero, me te tino paingia e nga kaihanga mo a raatau kaupapa ki te whakawhitiwhiti i nga momo microcontrollers me nga piringa kua whakauruhia ki te IC kotahi.
El Ko te I2C he pahi rongonui korero rangatū. Ka whakamahia e ia tetahi kawa whakawhitiwhitinga honohono me nga awa e rua noa (he tuatoru, engari ka honoa ki te tohutoro, ki te GND ranei), ina hoki e mohiotia ana ko TWI (Atanga Waea Rua):
- Kotahi mo te karaka (SCL).
- Ko etahi atu mo te raraunga (SDA).
E tohu ana tera te rangatira me te pononga ka tukuna e ratau nga raraunga ki runga i taua taura raanei ara raanei, e whakahaerehia ana e te tuatahi ka whakaputa i te tohu karaka. Ko ia o nga taputapu piripiri e hono ana ki te pahi I2C ka whai waahi motuhake ki te whakarite, hei whakatika i nga whakawhitinga. Engari kaore e tika kia orite te kaiako i nga wa katoa (he maha nga-kaiwhakaako), ko ia tonu te kaimanaaki whakawhiti.
Ka rite ki kua whakamāramatia e ahau i roto i te tuhinga i runga i Arduino I2C I korero ahau i mua, kei ia poari enei hononga I2C i nga waahi rereke. He mea hei whakaaro maau kia taea ai te whakamahi tika i ia waahanga pereti:
- Arduino UNO: Ko te SDA kei te A4 me te SCK i te A5
- ArduinoNano: te rite ki te mua.
- Arduino MiniPro: rite.
- Mega Arduino: Kei te SDA te titi 20 me te SCK kei te 21.
- He korero ano mo te pereti.
Kua mohio ano koe ka taea e koe te whakamahi i te I2C mo o tuhi, mai i te Whare pukapuka Wire.h me nga momo mahi mo tenei korerorero korero:
- tiimata (): tiimata te whare pukapuka Waea ka tohu mena he rangatira he pononga ranei
- tonoMai (): whakamahia e te rangatira ki te tono raraunga mai i te pononga.
- timatanga Tuku (): tiimata te whakawhiti me te pononga.
- Whakamutunga Tukunga (): tuku mutunga.
- tuhi ()- Tuhia nga tuhinga mai i te pononga hei whakautu ki te tono a te rangatira ka taea ranei e koe te tuunga i te tuku rangatira
- waatea (): ka whakahoki i te maha o nga paita hei panui.
- panuihia (): panui i te paita i tukuna mai i te pononga ki te rangatira, te tuarua ranei.
- i runga i te Whiwhi (): Ka karanga i tetahi mahi ka riro i te pononga te tuku mai i te rangatira.
- onRequest (): Ka karanga i tetahi mahi ina tono te pononga i nga korero mai i te rangatira.
para nui atu nga korero mo te kaupapa Arduino me nga mahi ka taea e koe te tango i a maatau Akoranga PDF.
He aha te PCF8574?
Ko te PCF8574 he Ko nga whakauru rorohiko I2C pahi me nga putanga (I / O) e kawe ana. Ka taea e nga momo kaihanga te hanga, hei taapiri ki te waatea i nga IC me nga waahanga. Ahakoa he aha, he mea pai ki te hono atu ki to papa Arduino me te kaha ki te whakahaere i etahi atu taputapu kaore e whakaaetia e te kaupapa matua.
El Poutu PCF8574 he ngawari, na te mea he whakauru noa iho 8 pines ahuarangi-aronga (P0-P7 kei reira nga kiripiri hei whakawhiti korero), kei tetahi atu ringa kei a koe te SDA me te SCL me hono atu koe ki te poari Arduino, me te VCC me te GND kia kaha ai hoki te kawe i te kaupapa. Kaua hoki e wareware ki nga pou korero e toru A0, A1, A2 ki te tohu ko tehea o nga taputapu e ahu atu ana te whakawhitinga korero ki ...
Rangatira etahi atu waahanga kia mohio koe:
- Ko ona hononga, he waikawa tuwhera, ka taea whakamahia ana hei whakauru me nga whakaputa.
- La tihi o nāianei ko te 25mA ka mahi ana hei putanga (totohu, ka rere ana te PCF8574) me te 300 µA (puna, ka rere mai i PCF8574).
- La mānukanuka ko te mana ko te 2.5 me te 6v. Ko te kohi-ma te kohi he iti rawa, 10 µA anake.
- Nga putanga katoa whai raiti, ki te pupuri i te kawanatanga me te kore e hiahiatia nga mahi o waho. Me mahi noa koe ina hiahia koe ki te whakarereke i te ahua.
- Ka taea e koe te tiki 8 nga tohutohu ka taea, ara, tae atu ki te 8 taputapu hei whakawhiti korero ma te whakamahi ranei i nga waahanga 8 hei whakawhaanui kia 64 nga taputapu. Ko nga wahitau (pine A0, A1, A2) ka penei:
- 000: wāhitau 0x20
- 001: wāhitau 0x21
- 010: wāhitau 0x22
- 011: wāhitau 0x23
- 100: wāhitau 0x24
- 101: wāhitau 0x25
- 110: wāhitau 0x26
- 111: wāhitau 0x27
- Whakaae whakakahore (INT) ma tetahi raina motuhake kia kitea nga raraunga kaore e aro turukihia.
Te Whakakotahitanga me Arduino
Ko te hononga ki te Arduino he tino maamaa, me hono noa a Vcc me nga tohu 5v o te poari Arduino, me te GND me te GND o Arduino. I tetahi atu, ko nga titi o te PCF8574 SDA me te SCL waahanga ka taea hono atu ki nga titi 14 (A5 SCL) me te 15 (A4 SDA). Ma tenei ka tiimata te mahi, maarama ka taea e koe te whakamahi i te Px ki te hono i nga taputapu e hiahia ana koe ki te whakawhiti korero ...
Katahi ka ngaro noa iho tiimata ma te tauira tuhi i te Arduino IDE. Ka taea e koe te mahi ma te kore e whakamahi i tetahi wharepukapuka taapiri penei i te ...
#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); } }
Hei whakauru:
#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); }
Ano hoki whakamahi wharepukapuka, penei i te PCF8574 ka taea e koe tikiake i konei ka whakamahi waehere rite ki tenei mai i te tauira ake ka haere mai me tenei whare pukapuka.
#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() { }
Hei tuatahi ki te korero