ඔබ නිසැකවම අසා ඇත IC PCF8574, වෙනමම මිලදී ගත හැකි හෝ දැනටමත් බොහෝ මොඩියුලයක සවි කර ඇති චිපයකි ඉලෙක්ට්රොනික සංරචක ඔබේ Arduino මණ්ඩලය සමඟ ඒකාබද්ධ වීමට පහසුකම් සැලසීමට. මෙම අවස්ථාවේ දී, එය සඳහා යෙදවුම් සහ ප්රතිදානයන්හි විස්තාරකයකි I2C බස් රථය.
Arduino දැනටමත් තමන්ගේම යැයි ඔබ සිතනු ඇත ඒකාබද්ධ I2C බස්, එය සත්යයකි. නමුත් PCF8574 මඟින් ඔබේ සංවර්ධන මණ්ඩලයේ සීමාවෙන් ඔබ්බට එම බස් රථය දිගු කිරීමට උපකාරී වන අතර එය Arduino සපයන දෙයට වඩා වැඩි යමක් අවශ්ය සමහර නිෂ්පාදකයින්ට විශාල උපකාරයක් විය හැකිය.
I2C බස් රථය යනු කුමක්ද?
I2C යන නම පැමිණියේ අන්තර් ඒකාබද්ධ පරිපථය හෝ අන්තර් ඒකාබද්ධ පරිපථ. එහි 1.0 අනුවාදය 1992 දී පිලිප්ස් විසින් නිර්මාණය කරන ලදී. 2.1 දී දෙවන 2000 ක් පැමිණෙනු ඇති අතර 100 දී පේටන්ට් බලපත්රය කල් ඉකුත් වූ විට එය නිදහසේ භාවිතා කළ හැකි වන විට (එය 3.4 kbit / s උපරිම වේ.
වර්තමානයේ එය කර්මාන්තයේ බහුලව භාවිතා වේ සන්නිවේදනය සඳහා, සහ එක් අයිසී එකක ඒකාබද්ධ වී ඇති විවිධ ක්ෂුද්ර පාලක සහ පර්යන්ත සන්නිවේදනය කිරීම සඳහා නිෂ්පාදකයින් විසින් ඔවුන්ගේ ව්යාපෘති සඳහා බෙහෙවින් අගය කරනු ලැබේ.
El I2C යනු බස් රථයකි අනුක්රමික සන්නිවේදනයෙන් හොඳින් දන්නා කරුණකි. එය නාලිකා 2 ක් පමණක් සහිත සමමුහුර්ත සන්නිවේදන ප්රොටෝකෝලයක් භාවිතා කරයි (තුනෙන් එකක් ඇත, නමුත් එය යොමු කිරීම හෝ GND සමඟ සම්බන්ධ වේ), ඇත්ත වශයෙන්ම එය TWI (වයර් දෙක අතුරුමුහුණත) ලෙසද හැඳින්වේ:
- ඔරලෝසුව සඳහා එකක් (SCL).
- දත්ත සඳහා වෙනත් (SDA).
එයින් ගම්ය වන්නේ එම ස්වාමියා සහ දාසයා ඔවුන් එකම කේබල් හෝ ධාවන පථයක් හරහා දත්ත යවන අතර එය ඔරලෝසු සං .ාව ජනනය කරන පළමු එක මගින් පාලනය වේ. I2C බස් රථයට සම්බන්ධ සෑම පර්යන්ත උපාංගයක්ම සම්ප්රේෂණ මෙහෙයවීම සඳහා අද්විතීය ලිපිනයක් පවරා ඇත. නමුත් ස්වාමියා සැමවිටම එක හා සමාන බව අවශ්ය නොවේ (බහු මාස්ටර්), සෑම විටම මාරුවීම ආරම්භ කරන්නේ ඔහුය.
මම දැනටමත් ලිපියේ විස්තර කර ඇති පරිදි Arduino I2C මා කලින් සඳහන් කළ පරිදි, සෑම පුවරුවකම මෙම I2C සම්බන්ධතා විවිධ ස්ථානවල ඇත. සෑම තහඩු අනුවාදයකම එය නිසියාකාරව භාවිතා කිරීමට හැකිවීම ඔබ මතක තබා ගත යුතු දෙයකි:
- Arduino UNO: SDA A4 හි සහ SCK A5 හි ඇත
- ආර්ඩුයිනෝ නැනෝ: පෙර මෙන් ම ය.
- ආර්ඩුයිනෝ මිනි ප්රෝ: එකම.
- ආර්ඩුයිනෝ මෙගා: SDA පින් 20 සහ SCK 21 මත ඇත.
- තහඩු පිළිබඳ වැඩි විස්තර.
ඔබගේ සිතියම් සඳහා I2C පහසුවෙන් භාවිතා කළ හැකි බව ඔබ දැනටමත් දනී Wire.h පුස්තකාලය මෙම අනුක්රමික සන්නිවේදනය සඳහා විවිධ කාර්යයන් සමඟ:
- ආරම්භය (): වයර් පුස්තකාලය ආරම්භ කර එය ස්වාමියා හෝ වහලෙක් දැයි සඳහන් කරන්න
- requestFrom () වෙතින්: දාසයාගෙන් දත්ත ඉල්ලා සිටීමට ස්වාමියා විසින් භාවිතා කරයි.
- startTransmission (): දාසයා සමඟ සම්ප්රේෂණය ආරම්භ කරන්න.
- endTransmission (): සම්ප්රේෂණය අවසන් කරන්න.
- ලියන්න ()- ස්වාමියාගේ ඉල්ලීමකට ප්රතිචාර වශයෙන් වහලෙකුගෙන් දත්ත ලියන්න, නැතහොත් ඔබට ස්වාමියාගේ සම්ප්රේෂණය පෝලිම් ගත හැකිය.
- පවතින (): කියවීමට බයිට් ගණන නැවත ලබා දෙනු ඇත.
- කියවන්න(): වහලෙකුගේ සිට ස්වාමියා වෙත සම්ප්රේෂණය කරන ලද බයිට් එකක් කියවන්න.
- onReceive (): දාසයෙකුට ස්වාමියාගෙන් සම්ප්රේෂණය ලැබෙන විට ශ්රිතයක් අමතයි.
- onRequest (): දාසයෙක් ස්වාමියාගෙන් දත්ත ඉල්ලා සිටින විට ශ්රිතයක් අමතයි.
පැරා වැඩි විස්තර Arduino ක්රමලේඛනය සහ කාර්යයන් පිළිබඳව ඔබට අපගේ බාගත හැකිය PDF නිබන්ධනය.
PCF8574 යනු කුමක්ද?
PCF8574 යනු අ I2C බස් ඩිජිටල් යෙදවුම් සහ ප්රතිදාන (I / O) විස්තාරකය. එය විවිධ නිෂ්පාදකයින්ට නිෂ්පාදනය කළ හැකි අතර, එය IC සහ මොඩියුල වලින් ලබා ගත හැකිය. ඕනෑම අවස්ථාවක, එය ඔබගේ Arduino පුවරුවට සම්බන්ධ කිරීම ඉතා ප්රායෝගික වන අතර මවු පුවරුව ඉඩ දෙන ප්රමාණයට වඩා උපාංග පාලනය කිරීමේ හැකියාව ඇත.
El PCF8574 pinout එය සරල බැවින් එය ඇතුළත් වේ 8 පයින් අර්ධ-දිශානුගත (P0-P7 සන්නිවේදනය කළ යුතු චිප්ස් සම්බන්ධ කර ඇති), අනෙක් අතට ඔබට SDA සහ SCL ඇත, ඔබ Arduino මණ්ඩලයට සම්බන්ධ විය යුතු අතර මොඩියුලය බල ගැන්වීම සඳහා VCC සහ GND ද ඇත. සන්නිවේදනය යොමු කර ඇති උපාංග මොනවාදැයි තෝරා ගැනීමට A0, A1, A2 යන ලිපිනයන් තුන අමතක නොකරන්න ...
අයිති වෙනත් විශේෂාංග ඔබ දැනගත යුතු බව:
- එහි සම්බන්ධතා විවෘත කාණු වීමක් විය හැකිය යෙදවුම් සහ ප්රතිදානයන් ලෙස භාවිතා කරයි.
- La උපරිම ධාරාව එය ප්රතිදානයක් ලෙස ක්රියා කරන විට එය 25mA වේ (ගිලී යයි, ධාරාව PCF8574 දෙසට ගලා යන විට) සහ 300 µA (ප්රභවය, PCF8574 වෙතින් ධාරාව ගලා යයි).
- La ආතතිය බල සැපයුම 2.5 සහ 6v වේ. ස්ථාවර පරිභෝජනය ඉතා අඩුය, 10 onlyA පමණි.
- සියලුම ප්රතිදානයන් වැසිකිළි ඇත, බාහිර ක්රියාමාර්ගයකින් තොරව රාජ්යය පවත්වාගෙන යාම. ඔබ ක්රියා කළ යුත්තේ ඔබට රාජ්යය වෙනස් කිරීමට අවශ්ය වූ විට පමණි.
- ඔබට 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 Arduino පුවරුවේ 5v පින් සමඟ සම්බන්ධ කළ යුතු අතර GND Arduino හි GND සමඟ සම්බන්ධ කළ යුතුය. අනෙක් අතට, PCF8574 SDA සහ SCL මොඩියුලයේ අල්ෙපෙනති විය හැකිය අල්ෙපෙනති සමඟ සම්බන්ධ වන්න 14 (A5 SCL) සහ 15 (A4 SDA). එය ක්රියා කිරීමට පටන් ගන්නේ ඒ සමඟ පමණි, පැහැදිලිවම ඔබට සන්නිවේදනය කිරීමට අවශ්ය උපාංග සම්බන්ධ කිරීමට Px භාවිතා කළ හැකිය ...
එවිට එය අතුරුදහන් වනු ඇත උදාහරණ සටහනකින් ආරම්භ කරන්න Arduino IDE හි. වැනි අමතර පුස්තකාලයක් භාවිතා නොකර ඔබට එය කළ හැකිය ...
#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() { }
අදහස් පළ කිරීමට ප්රථම වන්න