วิธีใช้ตัวขยาย I/O PCF8575 กับ Arduino

How to Use the PCF8575 I/O Expander with Arduino

PCF8575 เป็นตัวขยาย I/O 16 บิตที่สื่อสารกับไมโครคอนโทรลเลอร์ผ่านอินเตอร์เฟส I2C ช่วยให้คุณสามารถขยายจำนวนหมุดอินพุต/เอาต์พุตบน Arduino ของคุณทำให้สมบูรณ์แบบสำหรับโครงการที่ต้องการเซ็นเซอร์ปุ่มหรือ LED จำนวนมาก บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ PCF8575 กับ Arduino


สิ่งที่คุณต้องการ

  1. PCF8575 โมดูล Expander I/O
  2. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  3. เซ็นเซอร์ปุ่มหรือไฟ LED สำหรับการทดสอบ
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. คอมพิวเตอร์ที่ติดตั้ง 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

ขั้นตอนที่ 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"

ขั้นตอนในการติดตั้ง:

  1. เปิด Arduino IDE
  2. ไป ร่าง > รวมห้องสมุด > จัดการห้องสมุด.
  3. ค้นหา "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: ทดสอบการตั้งค่า

  1. เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
  2. เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
  3. อัปโหลดรหัสไปยัง Arduino โดยคลิก อัพโหลด.
  4. สำหรับตัวอย่าง LED สังเกตไฟ LED เปิดและปิด สำหรับตัวอย่างปุ่มปุ่มมอนิเตอร์จะระบุสถานะของจอภาพอนุกรม

แอปพลิเคชันของ PCF8575

  1. ขยายพิน GPIO สำหรับโครงการ Arduino
  2. การสร้างเมทริกซ์ LED ที่ซับซ้อน
  3. การอ่านเซ็นเซอร์หลายตัวหรืออาร์เรย์ปุ่ม
  4. การควบคุมรีเลย์และแอคทูเอเตอร์

การแก้ไขปัญหา

  • ไม่มีการตอบสนองจากโมดูล: ตรวจสอบการเชื่อมต่อ I2C และการกำหนดค่าที่อยู่
  • การอ่านที่ไม่สอดคล้องกัน: ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟที่เสถียรและตัวต้านทานแบบดึงขึ้นที่เหมาะสมสำหรับสาย I2C
  • พฤติกรรมพินไม่ถูกต้อง: โหมด PIN ตรวจสอบสองครั้ง (อินพุต/เอาต์พุต) ในรหัส

บทสรุป

คุณสามารถเชื่อมต่อ PCF8575 I/O expander กับ Arduino ได้สำเร็จช่วยให้คุณสามารถควบคุมหรืออ่านจากหมุด GPIO เพิ่มเติม 16 ตัว ทดลองกับอุปกรณ์ต่อพ่วงที่แตกต่างกันและขยายโครงการของคุณด้วยโมดูลอเนกประสงค์นี้!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.