Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Ê, chào möchte ich Euch zeigen wie Ihr das mit auf der Hauptplatine verbaute OLED Màn hình benutzen / ansteuern könnt. Um es möglichst einfach zu halten, benutze ich die ARDUINO GUI zum schreiben des CODEs und zum hochladen der Firmware.
Bước 1: Einstellen / Einrichten Der ARDUINO GUI
Als erstes muss das ESP8266 Board in der ARDUINO GUI verfügbar gemacht werden.
Dazu gehen wir in die Einstellungen (Datei Einstellungen / Bild 1) der GUI und tragen unter
"Zusätzliche Boardverwalter-URL:"
ein (Bild 2). Damit bekommen wir den benötigten Zugang zu dem quanden Boardtreiber.
Jetzt können wir den Passenden Boardtreiber installieren
(Bảng Werkzeuge: Boardverwaltung / Bild 3)
- Dort im suchfeld "esp8266" eintragen
- Dann "esp8266 bởi Cộng đồng ESP8266" auswählen und die aktuellste Phiên bản installieren (Bild 4)
- Die ARDUINO GUI sau khi bắt đầu
- Danach das Petrolimex Board auswählen (z. B: WeMos D1 R2 & mini)
Bước 2: I2C Schnittstelle Scannen
Um zu sehen an hàn mã PIN das OLED-Display angeschlossen wurde, scannen wir zuerst die I2C-Schnittstelle. Vì vậy, können wir auch sehen ob noch weitere I2C-Parts angeschlossen sind.
Den Sketch (Bild 1) auf den ESP Hochladen, den "Seriellen-Monitor" öffnen und auf die Ausgabe warten. Dort könnt Ihr dann sehen, Welches Thiết bị wo gefunden wurde. (Bild 2 - Quét DigitalPIN)
Das Ergebnis merken.
Trong dieem Fall: SDA = D1: SCL = D2 bei Adresse 0x3c
Bước 3: Demo-Sketch Anpassen Und Auf Den ESP Hochladen
Das ist der Code für das OLED-Display DEMO
Im 5. Abschnitt findet Ihr die Stelle an der der Code ggf. modifiziert werden muss.
Đồng thời chết Konfiguration für chết I2C-Schnittstelle.
Aus dieem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLEDs caniten.
/ ** * Giấy phép MIT (MIT) * * Bản quyền (c) 2016 của Daniel Eichhorn * * Theo đây, quyền được cấp miễn phí cho bất kỳ người nào có được bản sao * của phần mềm này và các tệp tài liệu liên quan ("Phần mềm"), để giao dịch * trong Phần mềm mà không có giới hạn, bao gồm nhưng không giới hạn quyền * sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối, cấp phép lại và / hoặc bán * bản sao của Phần mềm và cho phép những người có Phần mềm * được cung cấp để làm như vậy, tuân theo các điều kiện sau: * * Thông báo bản quyền ở trên và thông báo cho phép này sẽ được bao gồm trong tất cả các bản sao * hoặc các phần quan trọng của Phần mềm. * * PHẦN MỀM ĐƯỢC CUNG CẤP "NGUYÊN TRẠNG", KHÔNG BẢO ĐẢM BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HOẶC * NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN ĐẢM BẢO VỀ KHẢ NĂNG LAO ĐỘNG, * PHÙ HỢP VỚI MỤC ĐÍCH CỤ THỂ VÀ KHÔNG HỢP LỆ. TRONG MỌI TRƯỜNG HỢP SẼ KHÔNG CÓ * TÁC GIẢ HOẶC NGƯỜI GIỮ BẢN QUYỀN CHỊU TRÁCH NHIỆM PHÁP LÝ ĐỐI VỚI BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC KHÁC * TRÁCH NHIỆM PHÁP LÝ KHÁC, BẤT KỲ TRONG MỘT HÀNH ĐỘNG HỢP ĐỒNG, KHOẢN NÀO HOẶC KHÁC, PHÁT SINH TỪ, * NGOÀI HOẶC KẾT NỐI VỚI PHẦN MỀM HOẶC SỬ DỤNG HOẶC KHÁC KINH DOANH TRONG PHẦN MỀM *. * *
/ Bao gồm thư viện hiển thị chính xác
// Đối với kết nối qua I2C bằng Wire, hãy bao gồm #include // cho I2C Wire #include "SSD1306.h" // bí danh cho `#include" SSD1306Wire.h "`
// Bao gồm các hình ảnh tùy chỉnh
#include "images.h"
// Khởi tạo màn hình OLED bằng brzo_i2c
// D3 -> SDA // D5 -> SCL // Hiển thị SSD1306 (0x3c, D1, D2); hoặc màn hình SSD1306 (0x3c, 5, 4); hoặc màn hình SSD1306 (0x3c, GPIO5, GPIO4);
**************************************************************************************************
An der folgenden Stelle werden dann die PINs für die I2C Schnittstelle konfiguriert
// Khởi tạo màn hình OLED bằng thư viện Wire
Màn hình SSD1306 (0x3c, D1, D2);
***************************************************************************************************
#define DEMO_DURATION 3000
typedef void (* Demo) (void);
int demoMode = 0;
int counter = 1;
void setup () {
Serial.begin (9600); Serial.println ("OLED_DEMO"); Serial.println ("Khởi động DEMO");
// Khởi tạo giao diện người dùng cũng sẽ init hiển thị.
display.init ();
display.flipScreenVerently ();
display.setFont (ArialMT_Plain_10);
}
void drawFontFaceDemo () {
// Phông chữ Demo1 Serial.println ("Phông chữ DEMO 1"); // tạo thêm phông chữ tại https://oleddisplay.squix.ch/ display.setTextAlignment (TEXT_ALIGN_LEFT); display.setFont (ArialMT_Plain_10); display.drawString (0, 0, "ProMoScout"); display.setFont (ArialMT_Plain_16); display.drawString (0, 10, "ProMoScout"); display.setFont (ArialMT_Plain_24); display.drawString (0, 26, "ProMoScout"); }
void drawTextFlowDemo () {
Serial.println ("drawTextFlowDemo"); display.setFont (ArialMT_Plain_10); display.setTextAlignment (TEXT_ALIGN_LEFT); display.drawStringMaxWidth (0, 0, 128, "Robot là / n Tương lai, và tương lai, là bây giờ. Nhưng đừng quên Bản chất"); }
void drawTextAlignmentDemo () {
Serial.println ("drawTextAlignmentDemo"); // Bản demo căn chỉnh văn bản display.setFont (ArialMT_Plain_10); // Schriftart und -größe einstellen
// Tọa độ xác định điểm bắt đầu bên trái của văn bản
display.setTextAlignment (TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString (0, 10, "Căn trái (0, 10)");
// Tọa độ xác định tâm của văn bản
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 22, "Căn giữa (64, 22)");
// Tọa độ xác định phần cuối bên phải của văn bản
display.setTextAlignment (TEXT_ALIGN_RIGHT); display.drawString (128, 33, "Căn phải (128, 33)"); }
void drawRectDemo () {
Serial.println ("drawRectDemo"); // Vẽ một pixel tại vị trí đã cho for (int i = 0; i <10; i ++) {display.setPixel (i, i); display.setPixel (10 - i, i); } display.drawRect (12, 12, 20, 20);
// Tô màu cho hình chữ nhật
display.fillRect (14, 14, 17, 17);
// Vẽ một đường theo chiều ngang
display.drawHorizontalLine (0, 40, 20);
// Vẽ một đường theo chiều ngang
display.drawVerticalLine (40, 0, 20); }
void drawCircleDemo () {
Serial.println ("drawCircleDemo"); for (int i = 1; i <8; i ++) {display.setColor (WHITE); display.drawCircle (32, 32, i * 3); if (i% 2 == 0) {display.setColor (BLACK); } display.fillCircle (96, 32, 32 - i * 3); }}
void drawProgressBarDemo () {
Serial.println ("drawProgressBarDemo"); int tiến trình = (bộ đếm / 5)% 100; // vẽ thanh tiến trình display.drawProgressBar (0, 32, 120, 10, tiến trình);
// vẽ tỷ lệ phần trăm dưới dạng Chuỗi
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 15, String (tiến trình) + "%"); }
Der folgende Link im Kommentar kann helfen ein Bild oder Logo so umzuwandeln, das es auf dem Display angezeigt werden kann…
void drawImageDemo () {
Serial.println ("drawImageDemo"); // xem https://blog.squix.org/2015/05/esp8266-nodemcu-how… // về cách tạo tệp xbm display.drawXbm (34, 0, Logo_width, Logo_height, Logo_bits); }
Demo trình diễn = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof (demo) / sizeof (Demo)); lâuSinceLastModeSwitch = 0;
void loop () {
// xóa màn hình hiển thị display.clear (); // vẽ phương thức demo hiện tại demo [demoMode] ();
display.setTextAlignment (TEXT_ALIGN_RIGHT);
display.drawString (10, 128, String (millis ())); // ghi bộ đệm vào màn hình display.display ();
if (millis () - timeSinceLastModeSwitch> DEMO_DURATION) {
demoMode = (demoMode + 1)% demoLength; timeSinceLastModeSwitch = millis (); } bộ đếm ++; chậm trễ (10); }
Bước 4: Công cụ, Liên kết Und Herkunft / Literaturhinweis
Ich möchte mich bei allen bedanken die an dem ein oder anderen Code mit gewirkt haben.
Die Grundlagen für diese Anleitung habe ich gefunden unter:
www.instructables.com/id/ESP8266-I2C-PORT-…
github.com/ThingPulse/esp8266-oled-ssd1306…
Viele Grüße
McUtty