Ứng dụng: Hiển thị thông tin của cảm biến, ngày giờ, Menu..
#oled #lcd #manhinh #hienthi #i2c
Đó là một màn hình rất nhỏ có độ phân giải 128 × 64 pixel, Không có đèn nền. Đơn sắc.
Màn hình này sử dụng giao tiếp I2C. giao tiếp với Arduino chỉ sử dụng 2 chân.
Cách nối chân
Với các Board Arduino khác, bạn cần chú ý chân SCL và SDA.
- Nano: SDA (A4); SCL (A5);
- MEGA: SDA (20); SCL (21);
- Leonardo: SDA (20); SCL (21);
Lập trình
Bạn cần cài các thư viện sau:
https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip
https://github.com/adafruit/Adafruit_SSD1306/archive/master.zip
Các hàm cơ bản để hiển thị chử và vẽ
- display.clearDisplay() – xóa hết các Pixel
- display.drawPixel(x,y, color) – Vẽ điểm ở tọa độ x,y
- display.setTextSize(n) – chọn kích thước font, từ 1 đến 8
- display.setCursor(x,y) – chọn tại độ con trỏ văn bản
- display.print(“message”) – hiển thị nội dung “message” ra màn hình tính từ vị trí con trỏ
Ví dụ dùng màn hình này để hiển thị nhiệt độ và độ ẩm
Sơ đồ mạch
Để hiểu về cảm biến nhiệt độ và độ ẩm và cài thư viện dht22 , Bạn hãy tham khảo bài viết sau: https://making.vn/d/26-cam-bien-nhiet-do-dht11-dht22-va-cam-bien-do-am
/*
* Random Nerd Tutorials - Rui Santos
* Complete Project Details http://randomnerdtutorials.com
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Wire.begin();
dht.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// initialize with the I2C addr 0x3C
}
void displayTempHumid(){
delay(2000);
// đọc độ ẩm và nhiệt độ chờ trong 250 milliseconds!
// Cảm biến cần 2 seconds để lấy thông tin môi trường chính xác
float h = dht.readHumidity();
// Độ C
float t = dht.readTemperature();
// Độ F
float f = dht.readTemperature(true);
// Nếu lỗi, đọc lại
if (isnan(h) || isnan(t) || isnan(f)) {
display.clearDisplay(); // Xóa màn hình
display.setTextColor(WHITE); //cấu hình màu
display.setTextSize(1); //chọn kích thước font
display.setCursor(5,0); //Bắt đầu từ vị trí 5, 0
display.print("Loi·doc 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();
}
Kết quả