يعد PCF8575 عبارة عن موسع I/O 16 بت يتواصل مع متحكم عبر واجهة I2C. يتيح لك توسيع عدد دبابيس الإدخال/الإخراج على Arduino ، مما يجعله مثاليًا للمشاريع التي تتطلب العديد من أجهزة الاستشعار أو الأزرار أو المصابيح. سيوجهك هذا البرنامج التعليمي من خلال الاتصال واستخدام PCF8575 مع Arduino.
ماذا ستحتاج
- PCF8575 I/O وحدة Expander
- لوحة Arduino (على سبيل المثال ، UNO ، Mega ، Nano)
- أجهزة الاستشعار أو الأزرار أو المصابيح للاختبار
- الأسلاك الأسلاك والبلوز
- جهاز كمبيوتر مع Arduino IDE مثبت
الخطوة 1: فهم وحدة PCF8575
يوفر PCF8575 16 دبابيس GPIO إضافية يمكن تكوينها كمدخلات أو مخرجات. يتواصل عبر بروتوكول I2C وله عنوان I2C قابل للتعديل لتوصيل وحدات متعددة بنفس الحافلة.
pinout
| دبوس | وظيفة |
|---|---|
| VCC | مزود الطاقة (3.3V/5V) |
| GND | أرضي |
| SDA | خط بيانات I2C |
| SCL | خط الساعة I2C |
| P0-P15 | الغرض العام دبابيس I/O |
تكوين عنوان I2C
- يتم تحديد عنوان I2C بواسطة دبابيس A0 و A1 و A2:
- جميع المسامير إلى GND:
0x20(العنوان الافتراضي) - جميع المسامير إلى VCC:
0x27
- جميع المسامير إلى GND:
الخطوة 2: توصيل PCF8575 إلى Arduino
إليك كيفية توصيل PCF8575 بأردوينو:
| PCF8575 PIN | دبوس أردوينو |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 (SDA) |
| SCL | A5 (SCL) |
قم بتوصيل الأجهزة الطرفية الخاصة بك (على سبيل المثال ، مصابيح LED أو الأزرار) بدبابيس P0-P15.
ملحوظة: للوحات Arduino الأخرى ، تأكد من استخدام دبابيس I2C الصحيحة.
الخطوة 3: تثبيت المكتبة المطلوبة
لتبسيط العمل مع PCF8575 ، قم بتثبيت مكتبة "PCF8575".
خطوات التثبيت:
- افتح Arduino IDE.
- اذهب إلى رسم > تشمل المكتبة > إدارة المكتبات.
- ابحث عن "PCF8575" وانقر فوق ثَبَّتَ.
الخطوة 4: تحميل الرمز
مثال: التحكم في المصابيح
يوضح هذا الرمز كيفية تشغيل LEDs وإيقاف تشغيله باستخدام PCF8575:
#include <Wire.h>
#include <PCF8575.h>
PCF8575 pcf8575(0x20); // Initialize with the default I2C address
void setup() {
Serial.begin(9600);
// Set all pins as outputs
for (int i = 0; i < 16; i++) {
pcf8575.pinMode(i, OUTPUT);
}
Serial.println("PCF8575 initialized.");
}
void loop() {
// Turn all LEDs on
for (int i = 0; i < 16; i++) {
pcf8575.digitalWrite(i, HIGH);
}
delay(1000);
// Turn all LEDs off
for (int i = 0; i < 16; i++) {
pcf8575.digitalWrite(i, LOW);
}
delay(1000);
}
مثال: القراءة أزرار
يوضح هذا الرمز كيفية قراءة الإدخال من الأزرار المتصلة بـ PCF8575:
#include <Wire.h>
#include <PCF8575.h>
PCF8575 pcf8575(0x20); // Initialize with the default I2C address
void setup() {
Serial.begin(9600);
// Set all pins as inputs
for (int i = 0; i < 16; i++) {
pcf8575.pinMode(i, INPUT);
}
Serial.println("PCF8575 initialized.");
}
void loop() {
for (int i = 0; i < 16; i++) {
int state = pcf8575.digitalRead(i);
Serial.print("Pin ");
Serial.print(i);
Serial.print(": ");
Serial.println(state);
}
delay(500);
}
الخطوة 5: اختبار الإعداد
- قم بتوصيل Arduino بجهاز الكمبيوتر الخاص بك عبر USB.
- افتح Arduino IDE وحدد الصحيح سبورة و ميناء تحت أدوات قائمة طعام.
- قم بتحميل الرمز إلى Arduino بالنقر فوق رفع.
- على سبيل المثال LED ، مراقبة LEDs تشغيل وإيقاف. على سبيل المثال الزر ، حالات زر الشاشة في الشاشة التسلسلية.
تطبيقات PCF8575
- توسيع دبابيس GPIO لمشاريع Arduino
- بناء مصفوفات LED مجمع
- قراءة أجهزة استشعار متعددة أو صفائف الأزرار
- السيطرة على المرحلات والمحركات
استكشاف الأخطاء وإصلاحها
- لا استجابة من الوحدة: تحقق من اتصالات I2C وتكوين العنوان.
- قراءات غير متناسقة: تأكد من إمدادات الطاقة المستقرة ومقاومات السحب المناسبة لخطوط I2C.
- سلوك دبوس غير صحيح: قم بفحص أوضاع دبوس (إدخال/إخراج) في الكود.
خاتمة
لقد نجحت في الوصول إلى Expander PCF8575 I/O مع Arduino ، مما يتيح لك التحكم أو القراءة من 16 دبابيس GPIO إضافية. تجربة مع الأجهزة الطرفية المختلفة وتوسيع مشاريعك مع هذه الوحدة متعددة الاستخدامات!





2 تعليقات
Hallo Bruce,
benutze das Library von Renzo Mischianti (kannste nach googlen uind dort auch runterladen) und benenne den Folder in “PCF8575” um. Das Repository von Rob Tillaart hat andere Befehle und passt nicht zu dem o.g. Beispiel.
Ich hoffe das bringt dich weiter.
Gruß
Jochen
I copy the code and get a coplilation error:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino: In function ‘void setup()’:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino:11:13: error: ‘class PCF8575’ has no member named ‘pinMode’
pcf8575.pinMode(i, INPUT);
^~~~~~~
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino: In function ‘void loop()’:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino:19:25: error: ‘class PCF8575’ has no member named ‘digitalRead’
int state = pcf8575.digitalRead(i);
^~~~~~~~~~~
exit status 1
Compilation error: ‘class PCF8575’ has no member named ‘pinMode’