การใช้งาน I2C กับ OLED : ความรู้พื้นฐานและตัวอย่างโค้ด

การใช้งาน I2C กับ OLED : ความรู้พื้นฐานและตัวอย่างโค้ด

OLED (Organic Light-Emitting Diode)

เป็นจอแสดงผลที่ใช้สารอินทรีย์ในการสร้างแสงเมื่อมีกระแสไฟฟ้าไหลผ่าน โดยไม่ต้องใช้แสงพื้นหลังเหมือน LCD ทำให้ประหยัดพลังงานและให้ความคมชัดสูง

I2C (Inter-Integrated Circuit)

I2C (Inter-Integrated Circuit) สาย 2 เส้น (SDA สำหรับข้อมูล และ SCL สำหรับสัญญาณนาฬิกา) เพื่อเชื่อมต่อกับอุปกรณ์ เช่น OLED โดยทั่วไป OLED เช่น SSD1306 จะมีที่อยู่ (address) เช่น 0x3C หรือ 0x3D เพื่อระบุตัวตนในการสื่อสาร

ไลบรารี ที่จำเป็นต้องใช้

– adafruit_SSD1306.h
– adafruit_GFX.h
– adafruit_BusIO

 

1. เปิด Arduino IDE ของคุณ แล้วไปที่

Sketch  >  Include Library  >  Manage Libraries

2. พิมพ์ “ SSD1306 ” ในช่องค้นหาและติดตั้งไลบรารี SSD1306 by Adafruit

oled

3. หลังจากติดตั้งไลบรารี SSD1306 แล้ว ให้พิมพ์ “ GFX ” ในช่องค้นหาและติดตั้งไลบรารี Adafruit GFX Library

oled

4. หลังจากติดตั้งไลบรารี GFX แล้ว ให้พิมพ์ “ BusIO ” ในช่องค้นหาและติดตั้งไลบรารี Adafruit BusIO Library

oled

5. หลังจากติดตั้งไลบรารี่แล้ว ให้รีสตาร์ท Arduino IDE

ตัวอย่างโค้ด

อธิบายส่วนประกอบโค้ด

โค้ดนี้ใช้ Arduino ร่วมกับไลบรารี Wire, Adafruit_GFX, และ Adafruit_SSD1306 เพื่อควบคุมจอ OLED ขนาด 128×64 พิกเซลผ่าน I2C ใช้ ADDRESS 0x3C

1. การกำหนดค่าเริ่มต้น

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  • กำหนดขนาดจอ (128×64 พิกเซล) และที่อยู่ I2C (0x3C)
  • ตัวแปร display ใช้ควบคุมจอ OLED

2. กำหนดขา I2C

#define PIN_SDA 8
#define PIN_SCL 9
Wire.setPins(PIN_SDA, PIN_SCL);
ใช้ขา 8 (SDA) และ 9 (SCL) สำหรับการสื่อสาร I2C

3. ฟังก์ชัน setup()

if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    for(;;); // หยุดทำงานถ้าจอเชื่อมต่อไม่สำเร็จ
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(15, 5);
display.print(F("iMicon"));
  • เริ่มต้นจอ OLED และตรวจสอบการเชื่อมต่อ
  • ล้างหน้าจอ ตั้งขนาดตัวอักษรเป็น 2 เท่า สีขาว (WHITE)
  • กำหนดตำแหน่งเคอร์เซอร์ (x=15, y=5) แล้วพิมพ์คำว่า “iMicon”
  • ทำซ้ำเพื่อพิมพ์ “micro” และ “learning” ที่ตำแหน่งต่าง ๆ

4. ฟังก์ชัน setup()

display.display();

สั่งให้จอแสดงข้อความทั้งหมดที่กำหนดไว้

5. ฟังก์ชัน loop()

ว่างเปล่า เพราะโค้ดนี้แค่แสดงข้อความครั้งเดียว ไม่มีการอัปเดตเพิ่ม

การใช้งาน I2C กับอุปกรณ์อื่น

นอกจาก OLED แล้ว I2C ยังสามารถใช้งานกับอุปกรณ์อื่น ๆ ได้หลากหลาย เนื่องจากเป็นโปรโตคอลที่ออกแบบมาเพื่อการสื่อสารระหว่างไมโครคอนโทรลเลอร์และเซ็นเซอร์หรือโมดูลต่าง ๆ ตัวอย่างอุปกรณ์ที่รองรับ I2C ได้แก่:

  • เซ็นเซอร์วัดสิ่งแวดล้อม เช่น BME280 (วัดอุณหภูมิ ความชื้น ความดัน)
  • โมดูล RTC (Real-Time Clock) เช่น DS3231 สำหรับนาฬิกาแบบเรียลไทม์
  • เซ็นเซอร์ตรวจจับการเคลื่อนไหว เช่น MPU6050 (Accelerometer และ Gyroscope)

สรุป

โค้ดนี้เป็นตัวอย่างพื้นฐานในการใช้ I2C กับ OLED SSD1306 เพื่อแสดงข้อความ “iMicon micro learning” บนจอ การใช้งาน I2C ทำให้เชื่อมต่อง่ายด้วยสายเพียง 2 เส้น เหมาะสำหรับโปรเจกต์ขนาดเล็ก เช่น การแสดงผลในไมโครคอนโทรลเลอร์

การใช้งาน I2C ผ่าน GPIO Expander

ในการใช้งาน I2C ผ่าน GPIO Expander (pin header or terminal box) หากเชื่อมต่ออุปกรณ์ I2C ที่ใช้ address อื่นที่ไม่ใช่ 0x3C ไม่จำเป็นต้องดำเนินการใดเพิ่มเติม สามารถเชื่อมต่อและใช้งานได้ตามปกติ

 


อย่างไรก็ตาม หากมีความจำเป็นใช้อุปกรณ์ I2C อื่นๆที่เชื่อมต่อใช้งานที่ address 0x3C ซึ่งโดยค่าเริ่มต้นมีการเชื่อมต่อกับหน้าจอ OLED บนบอร์ด ผู้ใช้จะต้องทำการปรับการเชื่อมต่อที่ขา SDA และ SCL โดยการตั้งค่า Remove จัมเปอร์ใต้บอร์ดใหม่ เพื่อหลีกเลี่ยงความขัดแย้งของ address I2C ระหว่างอุปกรณ์ที่ใช้งาน

BESTการใช้งาน I2C กับ OLED : ความรู้พื้นฐานและตัวอย่างโค้ด

Related Posts