İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Merhaba, Daha fazla bilgi Euch zeigen wie Ihr das mit auf der Hauptplatine ayrıntılı OLED Ekran Benutzen/ansteuern könnt. ARDUINO GUI zum schreiben des CODEs und zum hochladen der Firmware.
Adım 1: Einstellen / Einrichten Der ARDUINO GUI
Als erstes muss das ESP8266 Board in der ARDUINO GUI verfügbar gemacht werden.
GUI ve tragen unter'de Einstellungen (Datei Einstellungen / Bild 1) içinde Dazu gehen wir
"Zusätzliche Boardverwalter-URL'leri:"
ein (Bild 2). Zugang zu dem passenden Boardtreiber'i ziyaret edin.
Jetzt können wir ve Passenden Boardtreiber kurulumları
(Werkzeuge Kurulu: Boardverwaltung / Bild 3)
- Dort im Suchfeld "esp8266" eintragen
- Dann "esp8266 by ESP8266 Community" auswählen und die aktuellste Version installieren (Bild 4)
- Die ARDUINO GUI neu starten
- Danach das passende Board auswählen (z. B.: WeMos D1 R2 ve mini)
2. Adım: I2C Schnittstelle Scannen
OLED-Display angeschlossen wurde, I2C-Schnittstelle tarafından taranan PIN'leri iyi bir şekilde görün. Bu nedenle, I2C-Parts angeschlossen sind.
Den Sketch (Bild 1) auf den ESP Hochladen, den " Seriellen-Monitor " öffnen ve auf die Ausgabe warten. Dort könnt Ihr dann sehen, Device wo gefunden wurde'yi selamlıyor. (Bild 2 - Dijital PIN Taraması)
Das Ergebnis merken.
In Diesem Güz: SDA = D1: SCL = D2 bei Adresse 0x3c
Adım 3: Anpassen Und Auf Den ESP Hochladen Demo-Sketch
OLED-Display DEMO için Das ist der Code für das
Im 5. Abschnitt findet Ihr die Stelle an der Code ggf. modifiye werden muss.
Ayrıca I2C-Schnittstelle için Yapılandırma.
Aus diesem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLED'ler mümkün.
/** * MIT Lisansı (MIT) * * Telif Hakkı (c) 2016 by Daniel Eichhorn * * Bu yazılımın ve ilgili belge dosyalarının ("Yazılım") bir kopyasını edinen herkese işbu belgeyle ücretsiz olarak izin verilir.), Yazılımı * kullanma, kopyalama, değiştirme, birleştirme, yayınlama, dağıtma, alt lisans verme ve/veya satma * hakları dahil ancak bunlarla sınırlı olmamak üzere kısıtlama olmaksızın * dağıtmak ve Yazılımın kendisine ait olduğu kişilere izin vermek * aşağıdaki koşullara tabi olarak bunu yapmak için * sağlanmıştır: * * Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılımın tüm * kopyalarına veya önemli bölümlerine dahil edilecektir. * * YAZILIM, SATILABİLİRLİK GARANTİLERİ DAHİL ANCAK BUNLARLA SINIRLI OLMAYAN, * BELİRLİ BİR AMACA UYGUNLUK VE İHLAL ETMEME GARANTİLERİ DAHİL OLMAK ÜZERE, AÇIK VEYA ZIMNİ HİÇBİR GARANTİ OLMAKSIZIN "OLDUĞU GİBİ" SAĞLANMAKTADIR. HİÇBİR DURUMDA * YAZARLAR VEYA TELİF HAKKI SAHİPLERİ, * YAZILIMDAN KAYNAKLANAN, * YAZILIMDAN KAYNAKLANAN, * YAZILIMDAN KAYNAKLANAN HERHANGİ BİR İDDİA, ZARAR VEYA DİĞER * SORUMLULUKTAN SORUMLU OLMAYACAKTIR * YAZILIMDAKİ İŞLER. * *
/ Doğru görüntüleme kitaplığını dahil et
// Wire kullanarak I2C üzerinden bağlantı için include #include // I2C Wire için #include "SSD1306.h" // `#include "SSD1306Wire.h"` için diğer ad
// Özel görüntüleri dahil et
#include "images.h"
// OLED ekranını brzo_i2c kullanarak başlatın
// D3 -> SDA // D5 -> SCL // SSD1306 görüntü(0x3c, D1, D2); veya SSD1306 ekranı (0x3c, 5, 4); veya SSD1306 ekranı (0x3c, GPIO5, GPIO4);
**************************************************************************************************
An der folgenden Stelle werden ve I2C Schnittstelle yapılandırması için PIN'ler
// Wire kitaplığını kullanarak OLED ekranını başlat
SSD1306 ekran (0x3c, D1, D2);
***************************************************************************************************
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoModu = 0;
int sayaç = 1;
geçersiz kurulum() {
Seri.başla(9600); Serial.println("OLED_DEMO"); Serial.println("DEMO'yu Başlatın");
// Kullanıcı arayüzünü başlatmak, ekranı da başlatacaktır.
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
geçersiz drawFontFaceDemo() {
// Yazı Tipi Demo1 Serial.println("Yazı Tipi DEMO 1"); // https://oleddisplay.squix.ch/ display.setTextAlignment(TEXT_ALIGN_LEFT) adresinde daha fazla yazı tipi oluşturun; 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"); }
geçersiz drawTextFlowDemo() {
Serial.println("drawTextFlowDemo"); display.setFont(ArialMT_Plain_10); display.setTextAlignment(TEXT_ALIGN_LEFT); display.drawStringMaxWidth(0, 0, 128, "Robotlar \n Gelecektir ve Gelecek şimdidir. Ama Doğayı unutmayın"); }
geçersiz drawTextAlignmentDemo() {
Serial.println("drawTextAlignmentDemo"); // Metin hizalama demosu display.setFont(ArialMT_Plain_10); // Schriftart und -größe einstellen
// Koordinatlar metnin sol başlangıç noktasını tanımlar
display.setTextAlignment(TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString(0, 10, "Sola hizalanmış (0, 10)");
// Koordinatlar metnin merkezini tanımlar
display.setTextAlignment(TEXT_ALIGN_CENTER); display.drawString(64, 22, "Ortaya hizalanmış (64, 22)");
// Koordinatlar metnin sağ ucunu tanımlar
display.setTextAlignment(TEXT_ALIGN_RIGHT); display.drawString(128, 33, "Sağa hizalanmış (128, 33)"); }
geçersiz drawRectDemo() {
Serial.println("drawRectDemo"); // (int i = 0; i < 10; i++) { display.setPixel(i, i); için verilen konumda bir piksel çizin display.setPixel(10 - ben, ben); } display.drawRect(12, 12, 20, 20);
// dikdörtgeni doldurun
display.fillRect(14, 14, 17, 17);
// yatay bir çizgi çiz
display.drawHorizontalLine(0, 40, 20);
// yatay bir çizgi çiz
display.drawVerticalLine(40, 0, 20); }
geçersiz drawCircleDemo() {
Serial.println("drawCircleDemo"); for (int i=1; i < 8; i++) { display.setColor(BEYAZ); display.drawCircle(32, 32, i*3); if (i % 2 == 0) { display.setColor(SİYAH); } display.fillCircle(96, 32, 32 - i* 3); } }
geçersiz drawProgressBarDemo() {
Serial.println("drawProgressBarDemo"); int ilerleme = (sayaç / 5) % 100; // ilerleme çubuğunu çiz display.drawProgressBar(0, 32, 120, 10, ilerleme);
// yüzdeyi String olarak çiz
display.setTextAlignment(TEXT_ALIGN_CENTER); display.drawString(64, 15, String(ilerleme) + "%"); }
Der folgende Link im Yorumlar kann helfen ein Bild oder Logo so umzuwandeln, das es auf dem Display angezeigt werden kann …
geçersiz drawImageDemo() {
Serial.println("drawImageDemo"); // bkz. https://blog.squix.org/2015/05/esp8266-nodemcu-how… // xbm dosyalarının nasıl oluşturulacağı hakkında display.drawXbm(34, 0, Logo_width, Logo_height, Logo_bits); }
Demo demoları = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof(demos) / sizeof(Demo)); long timeSinceLastModeSwitch = 0;
boşluk döngüsü () {
// ekranı temizle display.clear(); // mevcut demo yöntemini çizin demos[demoMode]();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis())); // arabelleği ekrana yaz display.display();
if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength; timeSinceLastModeSwitch = millis(); } sayaç++; gecikme(10); }
Adım 4: Araçlar, Bağlantılar ve Herkunft/Literaturhinweis
Ich möchte mich bei allen bedanken die an dem ein oder anderen Code mit gewirkt haben.
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