OLED Display (SSD1306 / SH1106)
พื้นฐานการสื่อสาร
จอ OLED ส่วนใหญ่เชื่อมต่อผ่าน โปรโตคอล I2C ควรศึกษาการตั้งค่า Address และการเดินสายสัญญาณเบื้องต้น

📋 ภาพรวม
จอ OLED (Organic Light-Emitting Diode) ขนาด 0.96 นิ้ว หรือ 1.3 นิ้ว เป็นที่นิยมมากเพราะให้ภาพที่คมชัด ประหยัดพลังงาน และสามารถวาดรูปหรือแสดงกราฟิกได้ โดยเชื่อมต่อผ่านโปรโตคอล I2C
ขนาดที่พบบ่อย
- 128 x 64 px: ความละเอียดมาตรฐาน
- 128 x 32 px: ทรงผอมกะทัดรัด
🔌 การต่อสาย (I2C)
💻 โค้ดตัวอย่าง
แนะนำให้ใช้ Library: Adafruit SSD1306 และ Adafruit GFX
Arduino / ESP32
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // ความกว้างจอ
#define SCREEN_HEIGHT 64 // ความสูงจอ
// ประกาศตัวแปรหน้าจอ
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
// เริ่มต้นหน้าจอที่ Address 0x3C
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay(); // ลบภาพในบัฟเฟอร์
display.setTextSize(1); // ขนาดตัวอักษร 1
display.setTextColor(WHITE); // สีตัวอักษร
display.setCursor(0, 10); // ตำแหน่งเริ่มเขียน
display.println("OLED TESTING...");
display.println("GhostMicro DIY");
display.display(); // สั่งให้จอแสดงผลข้อมูลจากบัฟเฟอร์
}
void loop() {
}
🛠️ โปรเจค DIY
1. นาฬิกาตั้งโต๊ะดิจิทัล
ใช้ร่วมกับโมดูล DS3231 (RTC) เพื่อแสดงเวลาและวันที่ที่แม่นยำ
2. จอแสดงกราฟระดับสัญญาน (Signal Monitor)
วาดเส้นกราฟ (Line, Bar) เพื่อแสดงการเปลี่ยนแปลงของค่าเซ็นเซอร์ เช่น ความเข้มแสง หรือระดับเสียง
⚠️ ข้อควรระวัง
ต้องสั่ง display.display()
Adafruit Library จะเก็บข้อมูลไว้ใน Buffer ใน Memory ก่อน ข้อมูลจะไม่ปรากฏบนจอจนกว่าคุณจะใช้คำสั่ง display.display()
การแสดงภาษาไทย
จอ OLED แบบนี้ไม่ได้รองรับภาษาไทยโดยตรง หากต้องการแสดงภาษาไทยต้องใช้ Library เสริม เช่น U8g2 หรือแปลงฟอนต์เป็น Bitmap รูปภาพ