LCD Display (16x2 / 20x4) with I2C

📋 ภาพรวม
จอ LCD (Liquid Crystal Display) รุ่น 16x2 (16 ตัวอักษร 2 แถว) และ 20x4 เป็นจอพื้นฐานที่นิยมที่สุดในงานไมโครคอนโทรลเลอร์ โดยส่วนใหญ่จะใช้คู่กับ I2C Interface Adapter เพื่อลดจำนวนสายที่ต้องใช้จาก 16 เส้น เหลือเพียง 4 เส้น
🔌 การต่อสาย (I2C)
การใช้โมดูล I2C Adapter ช่วยให้การต่อสายง่ายขึ้นมาก
| พินโมดูล | ฟังก์ชัน | ต่อกับ Arduino Uno | ต่อกับ ESP32 | ต่อกับ STM32 (I2C1) |
|---|---|---|---|---|
| VCC | ไฟเลี้ยง | 5V | 5V (หรือ 3.3V*) | 5V (หรือ 3.3V*) |
| GND | กราวด์ | GND | GND | GND |
| SDA | ข้อมูล | A4 | GPIO 21 | PB7 |
| SCL | สัญญาณนาฬิกา | A5 | GPIO 22 | PB6 |
*หมายเหตุ: จอ LCD ส่วนใหญ่ทำงานที่ 5V แต่ I2C บางรุ่นอาจรองรับ 3.3V โปรดตรวจสอบสเปกโมดูล
💻 โค้ดตัวอย่าง
ต้องติดตั้ง Library: LiquidCrystal I2C (โดย Frank de Brabander หรือตัวที่ได้รับความนิยม)
Arduino / ESP32
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// ตั้งค่า Address ของ I2C (ส่วนใหญ่เป็น 0x27 หรือ 0x3F)
// และขนาดของจอ (16 ตัวอักษร 2 แถว)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // เริ่มต้นหน้าจอ
lcd.backlight(); // เปิดไฟ Backlight
lcd.setCursor(0,0); // ไปที่หลัก 0 บรรทัด 0
lcd.print("Hello, DIYer!");
lcd.setCursor(0,1); // ไปที่หลัก 0 บรรทัด 1
lcd.print("GhostMicro DIY");
}
void loop() {
// ไม่มีการทำงานซ้ำในส่วนนี้
}
🛠️ โปรเจค DIY
1. ป้ายชื่อดิจิทัล (Digital Name Tag)
ทำป้ายแสดงชื่อและข้อความต้อนรับวางไว้ที่โต๊ะทำงาน
2. จอแสดงผลข้อมูลเซ็นเซอร์
ใช้ร่วมกับเซ็นเซอร์ DHT22 เพื่อแสดงค่าอุณหภูมิและความชื้นแบบ Real-time บนหน้าจอ
⚠️ ข้อควรระวัง
จอไม่ชัดหรือไม่มีตัวอักษร?
ที่ด้านหลังโมดูล I2C Adapter จะมี Potentiometer (ตัวปรับค่าสลับสีน้ำเงิน) ให้ใช้ไขควงแบนขนาดเล็กปรับเพื่อเพิ่มหรือลดความเข้มของตัวอักษร (Contrast) หากปรับไม่ถูกจุด ตัวอักษรอาจไม่ขึ้นเลยหรือขึ้นเป็นแถบขาวทั้งหมด
I2C Address
หากใช้โค้ดแล้วจอไม่ขึ้น ให้ลองรันโค้ด I2C Scanner เพื่อหา Address ที่แท้จริงของโมดูลคุณ (ส่วนใหญ่มักเป็น 0x27 หรือ 0x3F)