ต่อบอร์ดทดลองของเรา Arduino กับ อุปกรณ์ I2C LCD
ขั้นแรก ต่อ Vcc / GND / SDA / SCL
ขั้นที่ 2 หา Address ของอุปกรณ์ Address ของ I2C LCD ที่ใช้ชิป PCF8574(T) หรือ PCF8574A(T) จะมี Address ต่างกันนิดหน่อย
| PCF8574(T) | 0x20 – 0x27 |
| PCF8574A(T) | 0x38 – 0x3F |
Address ของ chip 2 รุ่นนี้ vary ได้นิดหน่อยตามขา Address – A1, A2, A3



| PCF8574 | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
| 0x20 | 0 | 0 | 0 | ||||
| 0x27 | 1 | 1 | 1 |
| PCF8574A | 0 | 1 | 1 | 1 | A2 | A1 | A0 |
| 0x38 | 0 | 0 | 0 | ||||
| 0x3F | 1 | 1 | 1 |
โดยปรกติขา A0, A1, A2 ของบอร์ดจีนมักจะปล่อยลอย ไม่มี DIP switch ให้ set ดังนั้นมันเลยเป็น A0 = 1, A1 = 1, A2 = 1 โดย default
ขั้นที่ 3 เลือก Library ‘LiquidCrystal_PCF8574’
#include <Wire.h> #include <LiquidCrystal_PCF8574.h>
เริ่มใช้งาน
LiquidCrystal_PCF8574 lcd(0x3F);
//เอาไว้ initial I2C bus //เห็นว่า run ครั้งเดียวพอ ไม่ต้องทำบ่อย เพราะมันอาจจะไปรบกวนการทำงานของ I2C device อื่นๆได้ถ้ามันกำลังทำงานอยู่
Wire.begin();
//ส่งสัญญาณไปถามว่าอุปกรณ์ยังอยู่ แล้วพร้อมทำงานหรือไม่
Wire.beginTransmission(0x3F);
error = Wire.endTransmission();
//error = 0 คือ หาอุปกรณ์เจอ พร้อมทำงาน
if (error == 0) {
//Serial.println(": LCD found.");
lcd.begin(16, 2); // initialize the lcd
lcd.setBacklight(255);
} else {
//Serial.println(": LCD not found.");
}
คำสั่งที่ใช้บ่อย
| lcd.home(); | |
| lcd.clear(); | |
| lcd.setCursor(col, row); | |
| lcd.print(“ABC”); | พิมพ์ออกไปที่ตำแหน่ง cursor นั้น หลังจากนั้นเลื่อน cursor ออกไปเรื่อยๆ ดังนั้น หลังจากพิมพ์ เราไม่ต้องเลื่อน cursor ไปตำแหน่งต่อไปเอง |
ยังไม่จบ