Library HS3UKA_PCF8574 สำหรับขยายขาดิจิตอล
PCF8574 เป็นชิป I/O Expander ที่ใช้โปรโตคอล I2C ในการสื่อสารกับไมโครคอนโทรลเลอร์ เช่น Arduino และ ESP32 ชิปนี้มีความสามารถในการขยายพอร์ตอินพุต/เอาต์พุตได้ถึง 8 พอร์ต ทำให้เราสามารถเพิ่มจำนวนพอร์ตได้โดยไม่ต้องใช้พื้นที่บนบอร์ดมากเกินไป แต่เนื่องจากไลบรารี่ PCF8574 โดยทั่วไปจะให้สถานะเป็น LOW ตอนเปิดเครื่องทำให้เมื่อเราต่อรีเลย์เข้ากับวงจรจะเกิดเสียงดังจากการทำงานของรีเลย์ขณะหนึ่ง เพื่อแก้ปัญหานี้สำหรับผู้ที่ใช้บอร์ด LARB32 และ LARB32 Pro แนะนำให้ดาวน์โหลดใช้งานไลบรารี่ HS3UKA_PCF8574 ซึ่งยังไม่มีให้ดาวน์โหลดจาก Arduino IDE จึงต้องทำตามขั้นตอนยุ่งยากดังนี้
- ดาวโหลดไฟล์ HS3UKA_PCF8574.zip
- ที่เมนูบน Arduino IDE เลือก Sketch > Include Library > Add .ZIP Library …
- เลือกไฟล์ HS3UKA_PCF8574.zip ที่ดาวน์โหลดไว้ แล้วรอซักครู่
- ทำการ ปิด-เปิด โปรแกรม 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