Hiển thị dữ liệu lên OLED SSD1306

Ứng dụng hiển thị dữ liệu lên OLED SSD1306.

Board UnoX giao tiếp với màn hình OLED SSD1306 thông qua giao thức I2C, và hiển thị dữ liệu nhận được từ Serial lên màn hình OLED.

Linh kiện cần có

Giới thiệu linh kiện

  • Màn hình có kích thước 0.96 inch, độ phân giải 128x64 pixel.
  • Điện áp hoạt động 3.3V-5V, kết nối với vi điều khiển thông qua giao tiếp I2C.
  • Chức năng hiển thị thông tin, tương tác với người dùng.

Wiring

OLEDBoard UnoX
Chân VCCChân 5VDC
Chân GNDChân GND
Chân SCLChân A5
Chân SDAChân A4

Lưu ý: Board UnoX tích hợp header OLED, vì vậy bạn chỉ cần cắm trực tiếp màn hình OLED lên Board.

Tải và cài đặt thư viện

  • Để có thể giao tiếp với OLED, bạn cần sử dụng các thư viện sau:

    • Thư viện Adafruit_SSD1306.
    • Thư viện Wire.h. Thư viện này được dùng khi muốn sử dụng giao tiếp I2C, tuy nhiên Arduino IDE đã tích hợp nên chúng ta chỉ cần gọi tên thư viện và sử dụng.

Mã nguồn

  • Khai báo một đối tượng OLED sử dụng giao thức I2C với địa chỉ 0x3C.
  • Sau khi khởi động, màn hình sẽ hiển thị chuỗi “Hello World”.
  • Chương trình sẽ thực hiện việc đọc dữ liệu người dùng nhập từ Serial và hiển thị dữ liệu đó lên màn hình OLED.
    #include <Wire.h>                               //  Thư viện cho giao tiếp I2C.
    #include <Adafruit_SSD1306.h>                   //  https://github.com/adafruit/Adafruit_SSD1306
    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);

    void setup()   {
        Serial.begin(9600);
        display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //  Khởi tạo OLED với địa chỉ 0x3C.
        display.clearDisplay();                     //  Xóa dữ liệu trên màn hình OLED.
        display.setTextSize(1);                     //  Thiết lập kích thước kí tự bằng 1.
        display.setTextColor(WHITE);                //  Thiết lập màu chữ là màu trắng.
        display.setCursor(28,12);                   //  Thiết lập con trỏ tại vị trí cột 28 hàng 12.
        display.println("Hello World!");            //  Thiết lập chuỗi cần in là "Hello World!".
        display.display();                          //  Hiển thị dữ liệu lên màn hình.
    }

    void loop() {
        /*Khi nhận được dữ liệu từ Serial sẽ hiển thị dữ liệu
         đó lên màn hình OLED bắt đầu từ vị trí (0;0) */
        while(Serial.available()){
            String x = Serial.readString();         //  Biến x lưu chuối dữ liệu được nhập từ Serial
            Serial.println(x);                      //  In ra Serial Monitor dữ liệu vừa nhận được.
            display.clearDisplay();
            display.setCursor(0,0);
            display.println(x);                     //
            display.display();                      //  Hiển thị dữ liệu nhận được lên màn hình OLED.
        }
    }

Kết quả

  • Hiển thị dòng chữ “Hello World!” khi chương trình khởi động.
  • Hiển thị dòng chữ ” Xin Chào Các Bạn!” nhận được từ Serial.

Ứng dụng mở rộng

  • Hiển thị dữ liệu từ cảm biến lên màn hình OLED.
  • Hiển thị hình ảnh lên màn hinh OLED.