PCF8575 เป็นตัวขยาย I/O 16 บิตที่สื่อสารกับไมโครคอนโทรลเลอร์ผ่านอินเตอร์เฟส I2C ช่วยให้คุณสามารถขยายจำนวนหมุดอินพุต/เอาต์พุตบน Arduino ของคุณทำให้สมบูรณ์แบบสำหรับโครงการที่ต้องการเซ็นเซอร์ปุ่มหรือ LED จำนวนมาก บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ PCF8575 กับ Arduino
สิ่งที่คุณต้องการ
- PCF8575 โมดูล Expander I/O
- คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
- เซ็นเซอร์ปุ่มหรือไฟ LED สำหรับการทดสอบ
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
ขั้นตอนที่ 1: ทำความเข้าใจโมดูล PCF8575
PCF8575 มีหมุด GPIO เพิ่มเติม 16 ตัวที่สามารถกำหนดค่าเป็นอินพุตหรือเอาต์พุต มันสื่อสารผ่านโปรโตคอล I2C และมีที่อยู่ I2C ที่ปรับได้สำหรับการเชื่อมต่อหลายโมดูลเข้ากับบัสเดียวกัน
ปัก
เข็มหมุด | การทำงาน |
---|---|
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 กับ Arduino:
PCF8575 PIN | พิน Arduino |
---|---|
VCC | 5V |
gnd | gnd |
SDA | A4 (SDA) |
SCL | A5 (SCL) |
เชื่อมต่ออุปกรณ์ต่อพ่วงของคุณ (เช่นไฟ LED หรือปุ่ม) กับพิน P0-P15
บันทึก: สำหรับบอร์ด Arduino อื่น ๆ ให้แน่ใจว่าคุณใช้พิน I2C ที่ถูกต้อง
ขั้นตอนที่ 3: ติดตั้งไลบรารีที่ต้องการ
เพื่อให้การทำงานกับ PCF8575 ง่ายขึ้นให้ติดตั้งไลบรารี "PCF8575"
ขั้นตอนในการติดตั้ง:
- เปิด Arduino IDE
- ไป ร่าง > รวมห้องสมุด > จัดการห้องสมุด.
- ค้นหา "PCF8575" แล้วคลิก ติดตั้ง.
ขั้นตอนที่ 4: อัปโหลดรหัส
ตัวอย่าง: การควบคุมไฟ LED
รหัสนี้แสดงวิธีเปิดและปิดไฟ LED โดยใช้ 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 สังเกตไฟ LED เปิดและปิด สำหรับตัวอย่างปุ่มปุ่มมอนิเตอร์จะระบุสถานะของจอภาพอนุกรม
แอปพลิเคชันของ PCF8575
- ขยายพิน GPIO สำหรับโครงการ Arduino
- การสร้างเมทริกซ์ LED ที่ซับซ้อน
- การอ่านเซ็นเซอร์หลายตัวหรืออาร์เรย์ปุ่ม
- การควบคุมรีเลย์และแอคทูเอเตอร์
การแก้ไขปัญหา
- ไม่มีการตอบสนองจากโมดูล: ตรวจสอบการเชื่อมต่อ I2C และการกำหนดค่าที่อยู่
- การอ่านที่ไม่สอดคล้องกัน: ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟที่เสถียรและตัวต้านทานแบบดึงขึ้นที่เหมาะสมสำหรับสาย I2C
- พฤติกรรมพินไม่ถูกต้อง: โหมด PIN ตรวจสอบสองครั้ง (อินพุต/เอาต์พุต) ในรหัส
บทสรุป
คุณสามารถเชื่อมต่อ PCF8575 I/O expander กับ Arduino ได้สำเร็จช่วยให้คุณสามารถควบคุมหรืออ่านจากหมุด GPIO เพิ่มเติม 16 ตัว ทดลองกับอุปกรณ์ต่อพ่วงที่แตกต่างกันและขยายโครงการของคุณด้วยโมดูลอเนกประสงค์นี้!