- Yêu cầu phần cứng:
- Tìm hiểu về Màn hình OLED:
- Phần cứng và kết nối:
- Lập trình màn hình OLED SSD1306 cho Arduino:
Hầu hết chúng ta sẽ quen thuộc với màn hình LCD ma trận 16 × 2 được sử dụng trong hầu hết các dự án để hiển thị một số thông tin cho người dùng. Nhưng những màn hình LCD này có rất nhiều hạn chế trong những gì chúng có thể làm. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về màn hình OLED và cách sử dụng chúng Arduino. Có rất nhiều loại màn hình OLED có sẵn trên thị trường và có rất nhiều cách để chúng hoạt động. Trong hướng dẫn này, chúng tôi sẽ thảo luận về các phân loại của nó và cũng như cách nào sẽ phù hợp nhất cho dự án của bạn.
Yêu cầu phần cứng:
- Mô-đun màn hình OLED 7pin 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Breadboard
- Kết nối dây
- Máy tính / Máy tính xách tay
Tìm hiểu về Màn hình OLED:
Thuật ngữ OLED là viết tắt của “ Diode phát sáng hữu cơ”, nó sử dụng cùng một công nghệ được sử dụng trong hầu hết các TV của chúng ta nhưng có ít điểm ảnh hơn so với chúng. Thật là vui khi có các mô-đun hiển thị trông bắt mắt này được giao tiếp với Arduino vì nó sẽ làm cho các dự án của chúng tôi trông thật bắt mắt. Chúng tôi đã đề cập đến một Bài báo đầy đủ về màn hình OLED và các loại của nó ở đây.
Chúng tôi đang sử dụng màn hình OLED 7 chân SSD 1306 0,96 ”đơn sắc. Lý do chọn màn hình này là nó có thể hoạt động trên ba Giao thức truyền thông khác nhau như chế độ SPI 3 Wire, SPI bốn wire và chế độ IIC. Hướng dẫn này sẽ trình bày cách sử dụng mô-đun ở chế độ SPI 4-wire vì đây là chế độ giao tiếp nhanh nhất và là chế độ mặc định.
Các chân và chức năng của nó được giải thích trong bảng dưới đây.
Số PIN |
Tên ghim |
Vài cái tên khác |
Sử dụng |
1 |
Gnd |
Đất |
Chân nối đất của mô-đun |
2 |
Vdd |
Vcc, 5V |
Pin nguồn (3-5V có thể chịu được) |
3 |
SCK |
D0, SCL, CLK |
Hoạt động như kim đồng hồ. Được sử dụng cho cả I2C và SPI |
4 |
SDA |
D1, MOSI |
Chân dữ liệu của mô-đun. Được sử dụng cho cả IIC và SPI |
5 |
RES |
RST, ĐẶT LẠI |
Đặt lại mô-đun (hữu ích trong SPI) |
6 |
DC |
A0 |
Pin Lệnh dữ liệu. Được sử dụng cho giao thức SPI |
7 |
CS |
Chọn chip |
Hữu ích khi nhiều mô-đun được sử dụng theo giao thức SPI |
Trong hướng dẫn này, chúng tôi sẽ chỉ vận hành mô-đun ở chế độ 4-Wire SPI, chúng tôi sẽ để phần còn lại cho một số hướng dẫn khác.
Cộng đồng Arduino đã cung cấp cho chúng tôi rất nhiều Thư viện có thể được sử dụng trực tiếp để làm cho việc này trở nên đơn giản hơn rất nhiều. Tôi đã thử một vài thư viện và thấy rằng Thư viện Adafruit_SSD1306 rất dễ sử dụng và có một số tùy chọn đồ họa, do đó chúng tôi sẽ sử dụng tương tự trong hướng dẫn này. Tuy nhiên, nếu dự án của bạn có hạn chế về bộ nhớ / tốc độ, hãy thử sử dụng Thư viện U8g vì nó hoạt động nhanh hơn và chiếm ít bộ nhớ chương trình hơn.
Phần cứng và kết nối:
Các Circuit Diagram cho SSD1306 OLED interfacing với Arduino là thực sự đơn giản và được hiển thị dưới đây
Chúng tôi chỉ đơn giản là thiết lập giao tiếp SPI giữa mô-đun OLED và Arduino. Vì OLED chạy trên 3V-5V và tiêu thụ rất ít năng lượng nên không cần nguồn điện bên ngoài. Bạn có thể chỉ cần sử dụng dây để tạo kết nối hoặc sử dụng breadboard như tôi đã sử dụng để dễ dàng thử nghiệm. Kết nối cũng được liệt kê trong câu chuyện dưới đây
S. không |
Ghim Tên trên mô-đun OLED |
Ghim Tên trên Arduino |
1 |
Gnd, Ground |
Đất |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Chọn chip |
12 |
Lưu ý: Bạn sẽ không thể hình dung bất kỳ đèn nền / phát sáng nào trên mô-đun OLED chỉ bằng cách cấp nguồn cho nó. Bạn phải lập trình nó một cách chính xác để nhận thấy bất kỳ thay đổi nào trên màn hình OLED.
Lập trình màn hình OLED SSD1306 cho Arduino:
Khi các kết nối đã sẵn sàng, bạn có thể bắt đầu lập trình Arduino. Như đã nói trước đó, chúng tôi sẽ sử dụng thư viện Adafruit và thư viện GFX để làm việc với mô-đun OLED này. Làm theo các bước để chạy thử màn hình OLED của bạn.
Bước 1: Tải xuống Thư viện Adafruit và thư viện GFX từ Github bằng liên kết bên dưới
- Thư viện Adafruit
- Thư viện đồ họa GFX
Bước 2: Bạn nên tải xuống hai tệp Zip. Bây giờ hãy thêm chúng vào Arduino của bạn bằng cách làm theo
Sketch-> Bao gồm Thư viện -> Thêm thư viện Zip như hình bên dưới. Sau đó chọn thư viện mà chúng ta vừa tải xuống. Bạn chỉ có thể chọn một thư viện tại một thời điểm, do đó bạn phải lặp lại bước này một lần nữa.
Bước 3: Khởi chạy Chương trình ví dụ bằng cách chọn File-> Examples-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino như trong hình dưới đây.
Bước 4: Bên trong chương trình ví dụ trên đầu dòng 64, thêm dòng “#define SSD1306_LCDHEIGHT 64” như trong hình dưới đây.
Bước 5: Bây giờ tải lên chương trình và bạn sẽ thấy màn hình OLED kích hoạt với mã ví dụ Adafruit mặc định như trong hình dưới đây. Các Video có hoạt động đầy đủ được đưa ra ở cuối.
Chương trình ví dụ này hiển thị cho bạn tất cả các đồ họa khả thi có thể được hiển thị trên màn hình OLED. Mã này sẽ đủ để bạn tạo bitmap, vẽ đường thẳng / hình tròn / hình chữ nhật, chơi với pixel, hiển thị ký tự và chuỗi với phông chữ và kích thước khác nhau, v.v.
Nếu bạn muốn hiểu rõ hơn về Thư viện và các chức năng của nó, bạn có thể đọc thêm. Mỗi đoạn mã được phân tách và giải thích với sự trợ giúp của các dòng bình luận. Mã hoàn chỉnh được đưa ra ở cuối Bài viết này
Hiển thị và xóa màn hình:
Viết trên màn hình OLED cũng giống như viết trên bảng đen, chúng ta phải viết các giá trị và sau đó làm sạch nó trước khi nó có thể bị ghi đè. Các lệnh sau được sử dụng để viết và xóa màn hình
display.display (); // Ghi vào hiển thị display.clearDisplay (); // xóa màn hình
Hiển thị một biến ký tự:
Để hiển thị nội dung bên trong một biến, có thể sử dụng đoạn mã sau.
char i = 5; // biến được hiển thị display.setTextSize (1); // Chọn kích thước của text display.setTextColor (WHITE); // chỉ hiển thị đơn sắc thì có thể có display.setCursor (0,0); // 0,0 là góc trên cùng bên trái của màn hình OLED display.write (i); // Viết biến được hiển thị
Vẽ Đường thẳng, Hình tròn, Hình chữ nhật, Hình tam giác:
Nếu bạn muốn thêm một số ký hiệu vào màn hình của mình, bạn có thể sử dụng mã sau để vẽ bất kỳ biểu tượng nào sau đây
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // void drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Vẽ một chuỗi ra màn hình:
Đoạn mã sau có thể được sử dụng để hiển thị bất kỳ thông báo nào trên màn hình ở một vị trí và kích thước cụ thể
display.setTextSize (2); // thiết lập kích thước của text display.setTextColor (WHITE); // cài đặt màu display.setCursor (10,0); // Chuỗi sẽ bắt đầu tại 10,0 (x, y) display.clearDisplay (); // Xóa bất kỳ hiển thị nào trước đó trên màn hình display.println ("Thông báo về mạch"); // In chuỗi ở đây “Thông báo mạch” display.display (); // gửi văn bản ra màn hình
Hiển thị hình ảnh bitmap:
Một điều đáng tin cậy có thể làm với mô-đun OLED là nó có thể được sử dụng để hiển thị ảnh bitmap. Đoạn mã sau được sử dụng để hiển thị hình ảnh bitmap
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B111111111100, B11001100, B1100110011001100, B110011001100, B11001100, B110011001100, B11001100, B11001100, B11001100, B11001100, B11001100, B110011, B11001100, B110011001100, B11001100, B110011001100, B110011001100, B110011001100, B11001100, B110011001100, B11001100, B11001101110 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Như bạn có thể thấy, để hiển thị một hình ảnh, dữ liệu bitmap phải được lưu trữ trong bộ nhớ chương trình dưới dạng chỉ thị PROMGMEM. Nói một cách đơn giản, chúng ta phải hướng dẫn màn hình OLED phải làm gì với mỗi pixel bằng cách chuyển cho nó một chuỗi hoặc các giá trị từ một mảng như hình trên. Mảng này sẽ chứa dữ liệu bitmap của hình ảnh.
Nghe có vẻ phức tạp nhưng với sự trợ giúp của công cụ web, rất dễ dàng chuyển đổi một hình ảnh thành các giá trị bản đồ bit và tải chúng vào mảng trên.
Chỉ cần tải hình ảnh và điều chỉnh cài đặt để có được bản xem trước hình ảnh ưa thích của bạn. Sau đó nhấp vào “Tạo mã” sao chép mã và dán vào Mảng của bạn. Tải lên chương trình và bạn đã hoàn tất. Tôi đã thử hiển thị một biểu tượng người dơi và đây là cách nó xuất hiện.
Vẫn còn rất nhiều thứ mà bạn có thể làm với các thư viện này. Để biết các khả năng đầy đủ, hãy truy cập trang Nguyên thủy đồ họa Adafruit GFX.
Hy vọng bạn đã chạy và sẵn sàng triển khai màn hình OLED trong một số dự án của mình. Nếu bạn có bất kỳ vấn đề gì, hãy chia sẻ chúng trong phần bình luận và tôi sẽ cố gắng hết sức để khắc phục chúng.