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
- Nhấn vào đây để tải về thư viện adafruit_GFX.
- Giải nén thư mục .zip và bạn sẽ thấy thư mục Adafruit-GFX-Library-master
- Đổi tên thư mục của bạn từ Adafbean-GFX-Library-mastervào thành Adafruit_GFX_Library
- 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
- Cuối cùng, mở lại Arduino IDE
Cài đặt thư viện adafruit_SSD1306
- Nhấn vào đây để tải xuống thư viện adafruit_SSD1306.
- Giải nén thư mục .zip và bạn sẽ thấy thư mục Adafruit-SSD1306-Library-master
- Đổi tên thư mục của bạn thành Adafruit-SSD1306
- 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
- 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/