Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Halo, hier möchte ich Euch zeigen wie Ihr das mit auf der Hauptplatine verbaute OLED Display 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.
Langkah 1: Einstellen / Einrichten Der ARDUINO GUI
Als erstes muss das ESP8266 Board di der ARDUINO GUI verfügbar gemacht werden.
Dazu gehen wir in die Einstellungen (Datei Einstellungen / Bild 1) dari GUI dan tragen unter
"Zusätzliche Boardverwalter-URLs:"
ein (Bild 2). Damit bekommen wir den benötigten Zugang zu dem passenden Boardtreiber.
Jetzt können wir den Passenden Boardtreiber installieren
(Dewan Werkzeuge: Boardverwaltung / Bild 3)
- Dort im Suchfeld "esp8266" eintragen
- Dann "esp8266 oleh Komunitas ESP8266" auswählen und die aktuellste Versi installieren (Bild 4)
- Mati ARDUINO GUI baru dimulai
- Danach das passende Board auswählen (z. B.: WeMos D1 R2 & mini)
Langkah 2: Pemindaian Schnittstelle I2C
Um zu sehen an welche PINs das OLED-Display angeschlossen wurde, scannen wir zuerst die I2C-Schnittstelle. Jadi 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 Perangkat wo gefunden wurde. (Bild 2 - Pemindaian DigitalPIN)
Das Ergebnis merken.
Di musim gugur diesem: SDA = D1: SCL = D2 bei Alamat 0x3c
Langkah 3: Demo-Sketsa 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.
Juga mati Konfigurasi untuk mati I2C-Schnittstelle.
Aus diesem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLEDs mampu.
/** * Lisensi MIT (MIT) * * Hak Cipta (c) 2016 oleh Daniel Eichhorn * * Dengan ini izin diberikan, gratis, kepada siapa pun yang memperoleh salinan * perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menangani * dalam Perangkat Lunak tanpa batasan, termasuk namun tidak terbatas pada hak * untuk menggunakan, menyalin, memodifikasi, menggabungkan, menerbitkan, mendistribusikan, mensublisensikan, dan/atau menjual * salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak adalah * dilengkapi untuk melakukannya, tunduk pada ketentuan berikut: * * Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus disertakan dalam semua * salinan atau sebagian besar Perangkat Lunak. * * PERANGKAT LUNAK INI DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN * TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN DIPERDAGANGKAN, * KESESUAIAN UNTUK TUJUAN TERTENTU DAN TANPA PELANGGARAN. DALAM HAL APAPUN * PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN ATAU TANGGUNG JAWAB * LAINNYA, BAIK DALAM TINDAKAN KONTRAK, KERUGIAN ATAU LAINNYA, YANG TIMBUL DARI, * DARI ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU LAINNYA DEALINGS DI * PERANGKAT LUNAK. * *
/ Sertakan perpustakaan tampilan yang benar
// Untuk koneksi melalui I2C menggunakan Wire include #include // untuk I2C Wire #include "SSD1306.h" // alias untuk `#include "SSD1306Wire.h"`
// Sertakan gambar khusus
#sertakan "gambar.h"
// Inisialisasi tampilan OLED menggunakan brzo_i2c
// D3 -> SDA // D5 -> SCL // tampilan SSD1306(0x3c, D1, D2); atau tampilan SSD1306 (0x3c, 5, 4); atau tampilan SSD1306 (0x3c, GPIO5, GPIO4);
**************************************************************************************************
Sebuah der folgenden Stelle werden dann die PINs für die I2C Schnittstelle konfiguriert
// Inisialisasi tampilan OLED menggunakan pustaka Wire
Layar SSD1306 (0x3c, D1, D2);
***************************************************************************************************
#tentukan DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int penghitung = 1;
batalkan pengaturan() {
Serial.begin(9600); Serial.println("OLED_DEMO"); Serial.println("Mulai DEMO");
// Menginisialisasi UI akan memulai tampilan juga.
tampilan.init();
display.flipScreenVertikal();
display.setFont(ArialMT_Plain_10);
}
batal drawFontFaceDemo() {
// Font Demo1 Serial.println("Font DEMO 1"); // buat lebih banyak font di 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"); }
batal drawTextFlowDemo() {
Serial.println("drawTextFlowDemo"); display.setFont(ArialMT_Plain_10); display.setTextAlignment(TEXT_ALIGN_LEFT); display.drawStringMaxWidth(0, 0, 128, "Robot adalah \n Masa Depan, dan Masa Depan, sekarang. Tapi jangan lupakan Sifatnya"); }
void drawTextAlignmentDemo() {
Serial.println("drawTextAlignmentDemo"); // Demo perataan teks display.setFont(ArialMT_Plain_10); // Schriftart und -größe einstellen
// Koordinat menentukan titik awal kiri teks
display.setTextAlignment(TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString(0, 10, "Sejajar kiri (0, 10)");
// Koordinat menentukan pusat teks
display.setTextAlignment(TEXT_ALIGN_CENTER); display.drawString(64, 22, "Sejajar tengah (64, 22)");
// Koordinat menentukan ujung kanan teks
display.setTextAlignment(TEXT_ALIGN_RIGHT); display.drawString(128, 33, "Sejajar kanan (128, 33)"); }
batal drawRectDemo() {
Serial.println("drawRectDemo"); // Menggambar piksel pada posisi tertentu untuk (int i = 0; i < 10; i++) { display.setPixel(i, i); display.setPixel(10 - i, i); } display.drawRect(12, 12, 20, 20);
// Isi persegi panjang
display.fillRect(14, 14, 17, 17);
// Gambar garis horizontal
display.drawHorizontalLine(0, 40, 20);
// Gambar garis horizontal
display.drawVerticalLine(40, 0, 20); }
batal drawCircleDemo() {
Serial.println("drawCircleDemo"); for (int i=1; i < 8; i++) { display.setColor(PUTIH); display.drawCircle(32, 32, i*3); if (i % 2 == 0) { display.setColor(HITAM); } display.fillCircle(96, 32, 32 - i* 3); } }
batal drawProgressBarDemo() {
Serial.println("drawProgressBarDemo"); int kemajuan = (penghitung / 5) % 100; // menggambar bilah kemajuan display.drawProgressBar(0, 32, 120, 10, kemajuan);
// gambar persentase sebagai String
display.setTextAlignment(TEXT_ALIGN_CENTER); display.drawString(64, 15, String(kemajuan) + "%"); }
Der folgende Tautan im Komentar kann helfen ein Bild oder Logo so umzuwandeln, das es auf dem Tampilan angezeigt werden kann …
batal drawImageDemo() {
Serial.println("drawImageDemo"); // lihat https://blog.squix.org/2015/05/esp8266-nodemcu-how… // tentang cara membuat file xbm display.drawXbm(34, 0, Logo_width, Logo_height, Logo_bits); }
Demo demo = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (ukuran(demo) / ukuran(Demo)); lama sejakLastModeSwitch = 0;
lingkaran kosong() {
// bersihkan tampilan display.clear(); // menggambar metode demo saat ini demos[demoMode]();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis())); // tulis buffer ke tampilan display.display();
if (millis() - time SinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength; time SinceLastModeSwitch = milis(); } penghitung++; penundaan (10); }
Langkah 4: Alat, Tautan Di Bawah Herkunft/Literaturhinweis
Ich möchte mich bei allen bedanken die an dem ein oder anderen Kode 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