• Cần giúp đỡ? Hãy gọi:   0938.788.458
Tất cả danh mục
Điện tử

Hướng dẫn sử dụng màn hình OLED 0.96 inch với Arduino

Hướng dẫn sử dụng màn hình OLED 0.96 inch với Arduino

Bài đăng này cho thấy cách sử dụng màn hình OLED nhỏ 0,96 inch với board Arduino.

Giới thiệu màn hình OLED 0.96 inch


Đó là một màn hình rất nhỏ với 128 x 64 pixel OLED riêng lẻ và không cần đèn nền. Màn hình OLED là đơn sắc (màu trắng), nhưng có những mẫu khác với nhiều màu.

Màn hình này sử dụng giao tiếp I2C. Điều này có nghĩa là nó giao tiếp với Arduino chỉ bằng 2 chân.

Nối dây


Việc kết nối màn hình OLED với Arduino khá đơn giản:

Chân           Đấu nối với Arduino Uno


Vin              5V

GND           GND

SCL             A5

SDA            A4


Nếu bạn đang sử dụng board Arduino khác chứ không phải uno, hãy tìm hiểu các chân SCL và SDA của chúng là gì.

  • Nano: SDA (A4); SCL (A5);
  • MEGA: SDA (20); SCL (21);
  • Leonardo: SDA (20); SCL (21);

Thư viện


Để điều khiển màn hình OLED, bạn sẽ cần thư viện của “adafruit_GFX.h” và “adafruit_SSD1306.h”.

Cài đặt thư viện adafruit_GFX

  1. Nhấn vào đây để tải về thư viện adafruit_GFX.
  2. Giải nén thư mục .zip và bạn sẽ thấy thư mục Adafruit-GFX-Library-master
  3. Đổi tên thư mục của bạn từ Adafbean-GFX-Library-mastervào thành Adafruit_GFX_Library
  4. Di chuyển thư mục Adafruit_GFX_Libraryvào thư mục thư viện cài đặt Arduino IDE của bạn
  5. Cuối cùng, mở lại Arduino IDE

Cài đặt thư viện adafruit_SSD1306

  1. Nhấn vào đây để tải xuống thư viện adafruit_SSD1306.
  2. Giải nén thư mục .zip và bạn sẽ thấy thư mục Adafruit-SSD1306-Library-master
  3. Đổi tên thư mục của bạn thành Adafruit-SSD1306
  4. Di chuyển thư mục Adafruit_SSD1306 vào thư mục thư viện cài đặt Arduino IDE của bạn
  5. Cuối cùng, mở lại Arduino IDE

Mẹo viết văn bản bằng các thư viện này


Đây là một số chức năng sẽ giúp bạn xử lý thư viện màn hình OLED để viết văn bản hoặc vẽ đồ họa đơn giản.

  • clearDisplay () – tất cả các pixel đều tắt
  • drawPixel (x, y, color) – vẽ một pixel theo tọa độ x, y
  • setTextSize (n) – đặt kích thước phông chữ, hỗ trợ kích thước từ 1 đến 8
  • setCoder (x, y) – đặt tọa độ để bắt đầu viết văn bản
  • print (tin nhắn trực tiếp) – in các ký tự ở vị trí x, y

Ví dụ: hiển thị nhiệt độ và độ ẩm trong màn hình OLED


Trong ví dụ này, bạn sẽ hiển thị nhiệt độ và độ ẩm trong màn hình OLED. Mục đích của dự án này là làm quen với màn hình OLED.

Linh kiện cần thiết

Trong ví dụ này, bạn sẽ cần các linh kiện sau:

  • Màn hình OLED 1x 0,96 inch
  • 1x Arduino
  • 1x cảm biến nhiệt độ và độ ẩm DHT11
  • 1x Breakboard
  • 1x Điện trở 10k Ohm
  • Dây dẫn

Sơ đồ mạch

Lắp ráp tất cả các linh kiện như trong sơ đồ dưới đây.

Code

Đảm bảo bạn đã cài đặt các thư viện cần thiết để điều khiển màn hình OLED. Bạn cũng cần cài đặt thư viện DHT.

Cài đặt thư viện cảm biến DHT

  • Nhấn vào đây để tải về thư viện cảm biến DHT.
  • Giải nén thư mục .zip và bạn sẽ nhận được thư viện DHT-sensor-library-master
  • Đổi tên thư mục của bạn thành DHT-sensor-library
  • Di chuyển thư mục DHT_sensor_Library vào thư mục thư viện cài đặt Arduino IDE của bạn
  • Cuối cùng, mở lại Arduino IDE

Sau đó, bạn có thể tải lên code sau đây.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

#define DHTPIN 2     // what pin we're connected to
#define DHTTYPE DHT11   // DHT 11
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);

void setup()
{
  Wire.begin();
  dht.begin(); // initialize dht
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// initialize with the I2C addr 0x3C (for the 128x32)(initializing the display)
  Serial.begin(9600);
}
void displayTempHumid(){
  delay(2000);
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    display.clearDisplay(); // clearing the display
    display.setTextColor(WHITE); //setting the color
    display.setTextSize(1); //set the font size
    display.setCursor(5,0); //set the cursor coordinates
    display.print("Failed to read from DHT sensor!");
    return;
  }
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Humidity: "); 
  display.print(h);
  display.print(" %\t");
  display.setCursor(0,10);
  display.print("Temperature: "); 
  display.print(t);
  display.print(" C"); 
  display.setCursor(0,20);
  display.print("Temperature: "); 
  display.print(f);
  display.print(" F"); 
}
void loop()
{
  displayTempHumid();
  display.display();
}

DEMO

Đây là màn hình OLED hoạt động sau khi tải lên code.

Dịch từ: https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/