Əlbətdə ki, eşitmisiniz PCF8574 IC, ayrıca satın alınan və ya digərləri kimi bir modula quraşdırılmış bir çip Elektron komponentlər Arduino lövhənizlə inteqrasiyanı asanlaşdırmaq. Bu vəziyyətdə, giriş və çıxışların genişləndiricisidir I2C avtobusu.
Arduinonun artıq özünün olduğunu düşünə bilərsiniz inteqrasiya olunmuş I2C avtobusuvə bu doğrudur. Ancaq PCF8574, bu avtobusu inkişaf lövhənizin hüdudlarından kənara uzatmağa kömək edə bilər ki, bu da Arduinonun təmin etdiyi şeydən daha çox ehtiyacı olan bəzi istehsalçılara böyük kömək ola bilər.
I2C avtobusu nədir?
I2C adı gəlir İnteqrasiya olunmuş dövrə və ya inter-inteqrasiya edilmiş dövrələr. 1.0 versiyası 1992-ci ildə Philips tərəfindən yaradılmışdır. O zaman ikinci bir 2.1, 2000-ci ildə gələcək və bu gün patentin müddəti 100-cı ildə bitdikdə və sərbəst istifadə edilə bilən bir standart halına gəldi (3.4 kbit / s-də, maksimum 2006 Mbit / s-yə qədər imkan verir).
Hazırda sənayedə geniş istifadə olunur rabitə üçünvə eyni zamanda bir IC-yə inteqrasiya olunmuş fərqli mikrokontroller və ətraf mühit ünsiyyətlərini qurmaq üçün layihələri üçün istehsalçılar tərəfindən çox yüksək qiymətləndirilmişdir.
El I2C bir avtobusdur yaxşı bilinən serial rabitə. Yalnız 2 kanallı bir sinxron rabitə protokolundan istifadə edir (üçüncüsü var, ancaq istinad və ya GND ilə birləşir), əslində TWI (İki Telli İnterfeys) olaraq da bilinir:
- Saat üçün bir (SCL).
- Məlumat üçün digər (SDA).
Bu deməkdir ağa və kölə saat siqnalını yaradan ilk tərəfindən idarə olunan eyni kabel və ya yol üzərindən məlumat göndərirlər. I2C avtobusuna qoşulmuş periferik cihazların hər birində ötürülmələri istiqamətləndirmək üçün unikal bir ünvan təyin ediləcəkdir. Ancaq müəllimin həmişə eyni olması (çox müəllim) olması vacib deyil, köçürməyə hər zaman təşəbbüskar özüdür.
Artıq məqalədə izah etdiyim kimi Arduino I2C Daha əvvəl istinad etdim, hər lövhədə fərqli yerlərdə bu I2C əlaqələri var. Hər plaka versiyasında düzgün istifadə edə bilmək üçün unutmamalı olduğunuz bir şeydir:
- Arduino UNO: SDA A4-də və SCK A5-də
- ArduinoNano: əvvəlki ilə eyni.
- Arduino MiniPro: eyni.
- Mega Arduino: SDA pin 20 və SCK 21-dədir.
- Plitələr haqqında daha çox məlumat.
Artıq eskizləriniz üçün I2C-dən asanlıqla istifadə edə biləcəyinizi bilirsiniz Tel.h kitabxana bu serial rabitə üçün müxtəlif funksiyaları ilə:
- başla (): Wire kitabxanasını başladın və master və ya kölə olduğunu göstərin
- requestFrom (): kölədən məlumat tələb etmək üçün usta tərəfindən istifadə olunur.
- beginTransmission (): kölə ötürməyə başlayın.
- endTransmission (): son ötürmə.
- yaz ()- Ağadan gələn bir sorğuya cavab olaraq bir kölədən məlumat yazın və ya bir master ötürülməsi üçün növbə tuta bilərsiniz
- mövcuddur (): oxunacaq bayt sayını qaytaracaq.
- oxu (): köldən ağaya ötürülən və ya əksinə bir bayt oxuyun.
- onReceive (): Bir kölə bir ustadan bir ötürmə aldıqda bir funksiyanı çağırır.
- onRequest (): Bir qul bir ustadan məlumat istədikdə bir funksiyanı çağırır.
qədər daha ətraflı məlumat Arduino proqramlaşdırma və funksiyaları haqqında bizim yükləyə bilərsiniz PDF təlimatı.
PCF8574 nədir?
PCF8574 birdir I2C avtobus rəqəmsal giriş və çıxışları (I / O) genişləndirici. IC və modullarda mövcud olmasına əlavə olaraq müxtəlif istehsalçılar tərəfindən istehsal edilə bilər. Hər halda, onu Arduino lövhənizə bağlamaq və anakartın icazə verdiyidən daha çox cihazı idarə etmək gücünə sahib olmaq çox praktikdir.
El PCF8574 pinout sadədir, çünki yalnız daxildir 8 çamları yarı istiqamətli (ünsiyyət qurmaq üçün çiplərin bir-birinə bağlandığı P0-P7) və digər tərəfdən Arduino lövhəsinə, eləcə də modulu gücləndirmək üçün VCC və GND-yə bağlamalı olduğunuz SDA və SCL-lər var. Rabitə cihazlarından hansına yönəldildiyini seçmək üçün A0, A1, A2 üç ünvan sancağını unutma ...
Sahibidir digər xüsusiyyətləri bilməlisiniz:
- Bağlantıları açıq bir drenaj olaraq ola bilər həm giriş, həm də çıxış olaraq istifadə olunur.
- La pik cərəyan Çıxış rolunu oynadığında 25mA (batma, cərəyan PCF8574-ə doğru axdıqda) və 300 µA (mənbə, cərəyan PCF8574-dən axır).
- La gərginlik enerji təchizatı 2.5 və 6v-dir. Gözləmə istehlakı çox azdır, yalnız 10 µA.
- Bütün nəticələr mandalı var, xarici hərəkətlərə ehtiyac olmadan dövləti qorumaq. Yalnız dövləti dəyişdirmək istədiyiniz zaman hərəkət etməlisiniz.
- 8 əldə edə bilərsiniz mümkün istiqamətlər, yəni 8 cihazla ünsiyyət qurmaq və ya 8 cihazı 64 cihaza qədər genişləndirmək üçün istifadə etmək. Ünvanlar (sancaqlar A0, A1, A2) belə olacaq:
- 000: ünvan 0x20
- 001: ünvan 0x21
- 010: ünvan 0x22
- 011: ünvan 0x23
- 100: ünvan 0x24
- 101: ünvan 0x25
- 110: ünvan 0x26
- 111: ünvan 0x27
- Qəbul edir kəsilmə (INT) daim nəzarət etmədən məlumatları aşkar etmək üçün xüsusi bir xəttlə.
Arduino ilə inteqrasiya
Arduino ilə əlaqə çox asandır, sadəcə Vcc-i Arduino lövhəsinin 5v pimi ilə, GND-ni isə GND of Arduino ilə bağlamalısınız. Digər tərəfdən, PCF8574 SDA və SCL modulunun sancaqları ola bilər sancaqlar ilə əlaqə qurun 14 (A5 SCL) və 15 (A4 SDA). Yalnız bununla işə başlayacaq, açıq şəkildə ünsiyyət qurmaq istədiyiniz cihazları birləşdirmək üçün Px istifadə edə bilərsiniz ...
O zaman yalnız itkin olardı bir nümunə eskiz ilə başlayın Arduino IDE-də. Bunu əlavə kitabxana istifadə etmədən edə bilərsiniz ...
#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); } }
Giriş olaraq:
#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); }
Və ya da kitabxanalardan istifadə edin, PCF8574 kimi edə bilərsiniz buradan indirin və bu kitabxana ilə birlikdə gələn nümunənin özündən buna bənzər kodu istifadə edin:
#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() { }
Şərh yazan ilk kişi olun