ได้รับส่งมอบฟรีในคําสั่งทั้งหมดมากกว่า 20 ปอนด์!

วิธีใช้จอแสดงผล OLED 0.91 "กับ Arduino

How to Use a 0.91" OLED Display with Arduino

A 0.91" OLED หน้าจอ เป็นหน้าจอขนาดเล็กที่มีคอนทราสต์สูง เหมาะอย่างยิ่งสำหรับ การแสดงข้อความ กราฟิก และข้อมูลจากเซ็นเซอร์ ในโปรเจกต์ Arduino. คู่มือนี้จะพาคุณทำตามขั้นตอน การเดินสายไฟ, การเขียนโค้ด, และการแสดงผลข้อความและกราฟิก โดยใช้ โมดูล OLED ที่ใช้ไดรเวอร์ SSD1306 กับ Arduino.


1. สิ่งที่คุณต้องมี

บอร์ด Arduino (Uno, Mega, Nano, ฯลฯ)
0.91" OLED จอแสดงผล (SSD1306, I2C)
สายจัมเปอร์
ติดตั้ง Arduino IDE แล้ว

🔹 หมายเหตุ: บทแนะนำนี้มุ่งเน้นที่ การสื่อสาร I2C, ซึ่งใช้เพียง สายสองเส้น (SDA & SCL), ทำให้เหมาะอย่างยิ่งสำหรับโปรเจกต์ง่ายๆ.


2. การเดินสายไฟ 0.91" OLED ไปยัง Arduino (โหมด I2C)

ขาจอแสดงผล OLED พิน Arduino Uno ขา Arduino Nano
VCC 5V 5V
GND GND GND
SDA A4 (SDA) A4 (SDA)
SCL A5 (SCL) A5 (SCL)

🔹 สำหรับ Arduino Mega: ใช้ SDA (ขา 20) และ SCL (ขา 21).


3. การติดตั้งไลบรารีที่จำเป็น

ก่อนเริ่มเขียนโค้ด ให้ติดตั้ง Adafruit SSD1306 และ Adafruit GFX ไลบรารี:

  1. เปิด Arduino IDE.
  2. ไปที่ สเก็ตช์ → รวมไลบรารี → จัดการไลบรารี.
  3. ค้นหา Adafruit SSD1306 และติดตั้งมัน.
  4. ค้นหา Adafruit GFX และติดตั้งมัน.

4. โค้ดพื้นฐานสำหรับแสดงข้อความบน OLED

ตัวอย่างนี้เริ่มต้นการทำงานของ OLED และแสดงผล "สวัสดี, Arduino!".

#include 
#include 
#include 

// Define OLED screen size
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32

// Initialize OLED display (I2C address 0x3C)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
    Serial.begin(115200);

    // Start OLED display
    if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
        Serial.println("SSD1306 allocation failed");
        for (;;);
    }

    display.clearDisplay();  // Clear buffer
    display.setTextSize(1);  // Text size
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(10, 10);
    display.println("Hello, Arduino!");
    display.display(); // Show text on screen
}

void loop() {
    // Nothing here (text is static)
}

🔹 โค้ดนี้ทำอะไร:
✔ เริ่มต้นการ จอแสดงผล SSD1306.
✔ พิมพ์ "สวัสดี, Arduino!" บนหน้าจอ.
✔ การใช้งาน ที่อยู่ I2C 0x3C (บางโมดูลอาจใช้ 0x3D).


5. การแสดงผลกราฟิก (เส้น, วงกลม, รูปภาพ)

เพื่อวาด รูปทรง, แก้ไขโค้ดโดยใช้ ฟังก์ชันของ Adafruit GFX.

void setup() {
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    display.clearDisplay();

    // Draw a rectangle
    display.drawRect(10, 10, 50, 20, SSD1306_WHITE);
    
    // Draw a filled circle
    display.fillCircle(90, 16, 10, SSD1306_WHITE);

    display.display();
}

void loop() {}

🔹 ฟังก์ชันวาดภาพอื่น ๆ:
display.drawLine(x1, y1, x2, y2, color); → วาดเส้น
display.drawCircle(x, y, radius, color); → วาดวงกลม
display.drawRect(x, y, width, height, color); → วาดสี่เหลี่ยมผืนผ้า


6. ตัวอย่างข้อความเลื่อน

ตัวอย่างนี้เลื่อนข้อความ ตามแนวนอน ทั่วทั้งหน้าจอ OLED.

void setup() {
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    display.clearDisplay();
    
    display.setTextSize(1);
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0, 10);
    display.println("Scrolling Text...");
    display.display();
    
    // Start scrolling
    display.startscrollleft(0x00, 0x0F); 
}

void loop() {}

🔹 ฟังก์ชันการเลื่อน:
display.startscrollleft(start, stop); → เลื่อนข้อความ ซ้าย
display.startscrollright(start, stop); → เลื่อนข้อความ ถูกต้อง
display.stopscroll(); → หยุดการเลื่อน


7. เคล็ดลับการแก้ไขปัญหา

ปัญหา: หน้าจอไม่แสดงอะไรเลย
✅ ตรวจสอบ การเดินสาย (เชื่อมต่อ SDA & SCL อย่างถูกต้อง).
✅ ตรวจสอบให้แน่ใจว่า ที่อยู่ I2C ของ OLED คือ 0x3C (หรือลอง 0x3D).
✅ ใช้ สแกนเนอร์ I2C เพื่อตรวจจับอุปกรณ์:

#include 
void setup() {
    Wire.begin();
    Serial.begin(115200);
    Serial.println("Scanning...");
    
    for (byte address = 8; address < 120; address++) {
        Wire.beginTransmission(address);
        if (Wire.endTransmission() == 0) {
            Serial.print("Found I2C device at 0x");
            Serial.println(address, HEX);
        }
    }
}
void loop() {}

ปัญหา: ข้อความมีขนาดเล็กเกินไปหรือใหญ่เกินไป.
✅ ปรับ display.setTextSize(1); (เพิ่มเพื่อให้ข้อความใหญ่ขึ้น).


8. การประยุกต์ใช้ในทางปฏิบัติ

การแสดงข้อมูลเซ็นเซอร์ – แสดงการอ่านค่าแบบเรียลไทม์จาก DHT11, BMP280, ฯลฯ
จอแสดงผลนาฬิกา – ใช้ร่วมกับ DS3231 โมดูล RTC เพื่อทำนาฬิกาดิจิทัล.
ระบบเมนู – ใช้ปุ่มเพื่อนำทางผ่านเมนู.
ตัวบ่งชี้แรงดันแบตเตอรี่ – ตรวจสอบระดับพลังงานในโปรเจกต์แบบพกพา.


9. บทสรุป

การใช้ 0.91" OLED กับ Arduino เป็นวิธีที่ยอดเยี่ยมในการเพิ่ม เอาต์พุตแบบภาพ ไปยังโปรเจ็กต์ของคุณ ไม่ว่าคุณต้องการจะแสดง ข้อความ, กราฟิก, หรือข้อมูลเซ็นเซอร์, หน้าจอขนาดเล็กนี้มอบ คอนทราสต์สูงและใช้พลังงานต่ำ.

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

1 ความคิดเห็น

Sres. buenas noches, gracias a su amables enseñanzas al menos yo he podido programar mis arduinos para escribir en pantallas OLED.
Ahora se me presenta otro reto, programar un arduino nano V3.0 con pantalla OLED 128 × 32 integrada, seria que nos ayudara si es que tienen el IDE para hacerlo?
Saludos afectuosos desde México.
Atte Fernando Soriano López

FERNANDO SORIANO LOPEZ,

แสดงความคิดเห็น