Viet Dev

Cover image for ESP8266 - OLED
Tuan for Unicloud Group

Posted on

ESP8266 - OLED

ESP8266 - OLED

Màn hình OLED

OLED (Organic Light Emitting Diode) là loại màn hình hiển thị bao gồm
một lớp vật liệu hữu cơ với chủ yếu là cacbon nằm giữa hai điện cực anot
và catot sẽ tự động phát sáng mỗi khi có dòng điện chạy qua. OLED sử
dụng đi-ốt phát quang hữu cơ, chính vì thế nó không cần tới đèn nền
chiếu sáng, do đó có lợi thế về kích thước cũng như tiết kiệm điện hơn
so với các loại LCD. Và độ sáng tương đối tốt ở môi trường sáng tự
nhiên.

Màn hình OLED SSD1306

Là màn hình loại nhỏ, kích thước tầm 0.96 inch cho tới 1.25 inch, được
dùng khá rộng rãi trong các sản phẩm điện tử. Tấm nền được điều khiển
bằng chip driver SSD1306. Chip này giao tiếp với các bộ điều khiển/MCU
khác bằng giao tiếp LCD.

OLED<br>
SSD1306

Giao tiếp I2C

I2C (Inter-Integrated Circuit) là một loại bus nối tiếp được phát triển
bởi hãng Philips nhằm truyền nhận dữ liệu giữa các IC. I2C sử dụng 2
đường truyền tín hiệu, 1 đường xung nhịp đồng hồ (SCL) do Master phát đi
và 1 đường truyền dữ liệu theo 2 hướng (SDA).

I2C<br>
Clock

Mô hình mạng<br>
I2C

Mạch vật lý I2C là mạch cực thu hở, do đó để mạng I2C có thể hoạt động
được, cần tối thiểu 2 cặp điện trở pull-up như trên hình. Thông thường
4k7, hoặc 1k2. Tùy thuộc vào tốc độ truyền và khoảng cách truyền.

Hiển thị màn hình OLED với ESP8266

Bước 1: Đấu nối nối chân GPIO4 - D2 của ESP8266 với chân SDA của
OLED, chân GPIO5 - D1 với SCL. Cấp nguồn 3v3 vào VCC và đấu GND cho
OLED.

NodeMCU với<br>
OLED

Bước 2: Cài đặt thư viện
ESP8266 and ESP32 OLED driver for SSD1306 display

Bước 3: Lập trình Chúng ta sẽ thực hiện hiển thị giả lập đồng hồ
trên màn hình OLED.

#include <Wire.h>
#include "SSD1306.h"

SSD1306  display(0x3c, 4, 5);
int thoi_gian = 0;
void setup()
{
  Serial.begin(115200);
  display.init();
  //display.flipScreenVertically(); //đảo chiều
  display.setFont(ArialMT_Plain_10);
  display.drawString(0, 0, "Hello world");
  display.display();
  delay(1000);
  display.clear();
}

void loop()
{
  int gio, phut, giay;

  delay(1000);
  thoi_gian ++;

  gio = thoi_gian/3600;
  phut = (thoi_gian%3600)/60;
  giay = thoi_gian % 60;
  display.clear();
  display.drawString(0, 0, String(gio) + ":" + String(phut) + ":" + String(giay));
  display.display();
}
Enter fullscreen mode Exit fullscreen mode

Nạp chương trình cho board NodeMCU và xem kết quả hiển trị trên OLED.

Latest comments (0)