Library HS3UKA_PCF8574 สำหรับขยายขาดิจิตอล

PCF8574 เป็นชิป I/O Expander ที่ใช้โปรโตคอล I2C ในการสื่อสารกับไมโครคอนโทรลเลอร์ เช่น Arduino และ ESP32 ชิปนี้มีความสามารถในการขยายพอร์ตอินพุต/เอาต์พุตได้ถึง 8 พอร์ต ทำให้เราสามารถเพิ่มจำนวนพอร์ตได้โดยไม่ต้องใช้พื้นที่บนบอร์ดมากเกินไป แต่เนื่องจากไลบรารี่ PCF8574 โดยทั่วไปจะให้สถานะเป็น LOW ตอนเปิดเครื่องทำให้เมื่อเราต่อรีเลย์เข้ากับวงจรจะเกิดเสียงดังจากการทำงานของรีเลย์ขณะหนึ่ง เพื่อแก้ปัญหานี้สำหรับผู้ที่ใช้บอร์ด LARB32 และ LARB32 Pro แนะนำให้ดาวน์โหลดใช้งานไลบรารี่ HS3UKA_PCF8574 ซึ่งยังไม่มีให้ดาวน์โหลดจาก Arduino IDE จึงต้องทำตามขั้นตอนยุ่งยากดังนี้

  1. ดาวโหลดไฟล์ HS3UKA_PCF8574.zip 
  2. ที่เมนูบน Arduino IDE เลือก Sketch > Include Library > Add .ZIP Library …
  3. เลือกไฟล์ HS3UKA_PCF8574.zip ที่ดาวน์โหลดไว้ แล้วรอซักครู่
  4. ทำการ ปิด-เปิด โปรแกรม Arduino IDE อีกครั้ง

เมื่อติดตั้งสำเร็จแล้วจะมีโค้ดตัวอย่างติดตั้งมาด้วยสามารถเปิดดูได้ที่ File > Examples > HS3UKA_PCF8574

ตัวอย่างการใช้งาน input ขาดิจิตอล

#include <HS3UKA_PCF8574.h>

HS3UKA_PCF8574 pcf8574;

void setup() {
    Serial.begin(115200);
    pcf8574.begin(0x20);  // Set the PCF8574 address
}

void loop() {
    int pinValue0 = pcf8574.digitalRead(0);  // Read the state of pin 0
    int pinValue1 = pcf8574.digitalRead(1);  // Read the state of pin 1
    int pinValue2 = pcf8574.digitalRead(2);  // Read the state of pin 2
    int pinValue3 = pcf8574.digitalRead(3);  // Read the state of pin 3
    int pinValue4 = pcf8574.digitalRead(4);  // Read the state of pin 4
    int pinValue5 = pcf8574.digitalRead(5);  // Read the state of pin 5
    int pinValue6 = pcf8574.digitalRead(6);  // Read the state of pin 6
    int pinValue7 = pcf8574.digitalRead(7);  // Read the state of pin 7

    Serial.println(String(pinValue0)+String(pinValue1)+String(pinValue2)+String(pinValue3)+String(pinValue4)+String(pinValue5)+String(pinValue6)+String(pinValue7));
    delay(2000);
}

ตัวอย่างการใช้งาน output ขาดิจิตอล

#include <HS3UKA_PCF8574.h>

HS3UKA_PCF8574 pcf8574;

void setup() {
    Serial.begin(115200);
    pcf8574.begin(0x20);  // Set the PCF8574 address
}

void loop() {
    pcf8574.digitalWrite(0, LOW);
    delay(1000);
    pcf8574.digitalWrite(1, LOW);
    delay(1000);
    pcf8574.digitalWrite(0, HIGH);
    delay(1000);
    pcf8574.digitalWrite(1, HIGH);
    delay(1000);
}
Facebook Comments