Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Hallo, 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.
Hakbang 1: Einstellen / Einrichten Der ARDUINO GUI
Als erstes muss das ESP8266 Board sa 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-URLs:"
ein (Bild 2). Damit bekommen wir den benötigten Zugang zu dem passenden Boardtreiber.
Jetzt können wir den Passenden Boardtreiber installieren
(Werkzeuge Board: Boardverwaltung / Bild 3)
- Dort im Suchfeld "esp8266" eintragen
- Ang "esp8266 ng Pamayanan ng ESP8266" ay hindi na makakakuha ng isang bersyon ng installieren (Bild 4)
- Mamatay ARDUINO GUI neu starten
- Danach das passende Board auswählen (z. B.: WeMos D1 R2 & mini)
Hakbang 2: I2C Schnittstelle Scannen
Um zu sehen an welche PINs das OLED-Display angeschlossen wurde, scannen wir zuerst die I2C-Schnittstelle. Kaya't können wir auch sehen ob noch weitere I2C-Parts angeschlossen sind.
Ang Den Sketch (Bild 1) ay ang ESP Hochladen, at ang "Seriellen-Monitor" ay hindi na kailangan ng Ausgabe warten. Dort könnt Ihr dann sehen, welches Device wo gefunden wurde. (Bild 2 - DigitalPIN Scan)
Das Ergebnis merken.
Sa diesem Fall: SDA = D1: SCL = D2 bei Adresse 0x3c
Hakbang 3: Ang Demo-Sketch Anpassen Und Auf Den ESP Hochladen
Das ist der Code para sa OLED-Display DEMO
Im 5. Natagpuan ang Ihr die Stelle an der der Code ggf. modifiziert werden muss.
Mamatay din Konfiguration para sa I2C-Schnittstelle.
Aus diesem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLEDs canitenen.
/ ** * Ang MIT Lisensya (MIT) * * Copyright (c) 2016 ni Daniel Eichhorn * * Sa ngayon ay ipinagkaloob ang pahintulot, nang walang bayad, sa sinumang tao na kumukuha ng isang kopya * ng software na ito at mga nauugnay na mga file ng dokumentasyon (ang "Software"), upang makitungo * sa Software nang walang paghihigpit, kasama ang walang limitasyon sa mga karapatang * gamitin, kopyahin, baguhin, pagsamahin, i-publish, ipamahagi, sublicense, at / o ibenta * ang mga kopya ng Software, at upang payagan ang mga tao kanino ang Software ay * inayos upang gawin ito, napapailalim sa mga sumusunod na kundisyon: * * Ang paunawa sa copyright at ang paunawang pahintulot na ito ay dapat isama sa lahat ng * mga kopya o malalaking bahagi ng Software. * * ANG SOFTWARE AY BINIGYAN NG "AS IS", WALANG garantiya ng ANUMANG KALAGANG, EXPRESS O * IMPLIED, KASAMA HINDI LIMITADO SA MGA WARRANTIES OF MERCHANTABILITY, * KASANAYAN PARA SA ISANG KASUNDUAN NA LAYUNIN AT NONINFRINGEMENT. SA ANUMANG KAGANAPAN AY ANG * Mga AUTHOR O KAPANGYARIHAN NG COPYRIGHT AY DAPAT HANGGANG PARA SA ANUMANG CLAIM, DAMAGES O IBA PA * KATANGGAPAN, ANO SA ISANG AKSYON NG KONTRATA, PAGSAKOT O PAGKAKAROON, NANGUNGULING MULA SA, * LABAS O KONEKTO SA SOFTWARE O NG GAMIT O IBA PA Mga Pakikitungo sa * SOFTWARE. * *
/ Isama ang tamang display library
// Para sa isang koneksyon sa pamamagitan ng I2C gamit ang Wire isama ang #include // para sa I2C Wire # isama ang "SSD1306.h" // alias para sa `#include" SSD1306Wire.h "`
// Isama ang mga pasadyang larawan
# isama ang "mga imahe.h"
// Initialize the OLED display using brzo_i2c
// D3 -> SDA // D5 -> SCL // SSD1306 display (0x3c, D1, D2); o display ng SSD1306 (0x3c, 5, 4); o display ng SSD1306 (0x3c, GPIO5, GPIO4);
**************************************************************************************************
Isang der folgenden Stelle werden dann die PINs para sa I2C Schnittstelle konfiguriert
// Initialize the OLED display using Wire library
Ipakita ang SSD1306 (0x3c, D1, D2);
***************************************************************************************************
# tukuyin ang DEMO_DURATION 3000
typedef void (* Demo) (void);
int demoMode = 0;
int counter = 1;
walang bisa ang pag-setup () {
Serial.begin (9600); Serial.println ("OLED_DEMO"); Serial.println ("Simulan ang DEMO");
// Initialising the UI will init the display too.
display.init ();
display.flipScreenVertically ();
display.setFont (ArialMT_Plain_10);
}
walang bisa drawFontFaceDemo () {
// Font Demo1 Serial.println ("Font DEMO 1"); // lumikha ng higit pang mga font sa 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"); }
walang bisa drawTextFlowDemo () {
Serial.println ("drawTextFlowDemo"); display.setFont (ArialMT_Plain_10); display.setTextAlignment (TEXT_ALIGN_LEFT); display.drawStringMaxWidth (0, 0, 128, "Ang mga Robots ay / n ang Hinaharap, at ang Hinaharap, ngayon. Ngunit huwag kalimutan ang Kalikasan"); }
void drawTextAlignmentDemo () {
Serial.println ("drawTextAlignmentDemo"); // Display alignment demo display.setFont (ArialMT_Plain_10); // Schriftart und -größe einstellen
// Ang mga coordinate ay tumutukoy sa kaliwang panimulang punto ng teksto
display.setTextAlignment (TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString (0, 10, "Naka-align sa kaliwa (0, 10)");
// Ang mga coordinate ay tumutukoy sa gitna ng teksto
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 22, "Nakahanay ang center (64, 22)");
// Ang mga coordinate ay tumutukoy sa kanang dulo ng teksto
display.setTextAlignment (TEXT_ALIGN_RIGHT); display.drawString (128, 33, "Nakahanay sa kanan (128, 33)"); }
walang bisa drawRectDemo () {
Serial.println ("drawRectDemo"); // Gumuhit ng isang pixel sa ibinigay na posisyon para sa (int i = 0; i <10; i ++) {display.setPixel (i, i); display.setPixel (10 - i, i); } display.drawRect (12, 12, 20, 20);
// Punan ang parihaba
display.fillRect (14, 14, 17, 17);
// Gumuhit ng isang linya nang pahalang
display.drawHorizontalLine (0, 40, 20);
// Gumuhit ng isang linya nang pahalang
display.drawVerticalLine (40, 0, 20); }
walang bisa drawCircleDemo () {
Serial.println ("drawCircleDemo"); para sa (int i = 1; i <8; i ++) {display.setColor (WHITE); display.drawCircle (32, 32, i * 3); kung (i% 2 == 0) {display.setColor (BLACK); } display.fillCircle (96, 32, 32 - i * 3); }}
walang bisa drawProgressBarDemo () {
Serial.println ("drawProgressBarDemo"); int pagsulong = (counter / 5)% 100; // draw the progress bar display.drawProgressBar (0, 32, 120, 10, progress);
// iguhit ang porsyento bilang String
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 15, String (pagsulong) + "%"); }
Mag-link sa pamamagitan ng Link sa Kommentar para sa helfen ein Bild oder Logo kaya umzuwandeln, maaari mong ipakita ang Display Network ng…
walang bisa drawImageDemo () {
Serial.println ("drawImageDemo"); // tingnan ang https://blog.squix.org/2015/05/esp8266-nodemcu-how… // sa kung paano lumikha ng mga xbm file display.drawXbm (34, 0, Logo_width, Logo_height, Logo_bits); }
Mga demo na demo = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof (demo) / sizeof (Demo)); mahabang panahonSinceLastModeSwitch = 0;
void loop () {
// limasin ang display display.clear (); // iguhit ang kasalukuyang demo na paraan ng demo [demoMode] ();
display.setTextAlignment (TEXT_ALIGN_RIGHT);
display.drawString (10, 128, String (millis ())); // isulat ang buffer sa display display.display ();
kung (millis () - timeSinceLastModeSwitch> DEMO_DURATION) {
demoMode = (demoMode + 1)% demoLength; timeSinceLastModeSwitch = millis (); } counter ++; antala (10); }
Hakbang 4: Mga Tool, Mga Link 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