Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Zdravo, 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 in zum hochladen der Firmware.
1. korak: Einstellen / Einrichten Der ARDUINO GUI
Več o tem, da je plošča ESP8266 in 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-ji:"
ein (slika 2). Damit bekommen wir den benötigten Zugang zu dem passenden Boardtreiber.
Jetzt können wir den Passenden Boardtreiber installation
(Werkzeuge Board: Boardverwaltung / Bild 3)
- Dort im Suchfeld "esp8266" eintragen
- Dann "esp8266 by ESP8266 Community" auswählen und die aktuellste Nameščena različica (slika 4)
- Die ARDUINO GUI neu starten
- Danach das passende Board auswählen (z. B.: WeMos D1 R2 & mini)
2. korak: I2C Schnittstelle Scannen
Če želite, da so kode PIN OLED-zaslona prikazane, skenirane in skenirane na I2C-Schnittstelle. Torej können wir auch sehen ob noch weitere I2C-Parts angeschlossen sind.
Skica (Slika 1) v ESP Hochladen, "Seriellen-Monitor" öffnen und auf die Ausgabe warten. Dort könnt Ihr dann sehen, wellings Device wo gefunden wurde. (Bild 2 - DigitalPIN Scan)
Das Ergebnis merken.
V jesenskem jesenu: SDA = D1: SCL = D2 na naslovu 0x3c
3. korak: Demo-Sketch Anpassen Und Auf Den ESP Hochladen
Das ist der Code for das OLED-Display DEMO
Im 5. Abschnitt findet Ihr die Stelle an der der Code ggf. modifiziert werden muss.
Prav tako die Konfiguration für die I2C-Schnittstelle.
Aus diesem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLEDs ableiten.
/** * Licenca MIT (MIT) * * Avtorska pravica (c) 2016 Daniel Eichhorn * * Dovoljenje se brezplačno podeli vsaki osebi, ki pridobi kopijo * te programske opreme in pripadajočih datotek dokumentacije ("programska oprema"), da brez omejitev trguje * s programsko opremo, vključno brez omejitev s pravicami * do uporabe, kopiranja, spreminjanja, združevanja, objave, distribucije, podlicenciranja in/ali prodaje * kopij programske opreme in dovoljuje osebam, ki jim programska oprema je * opremljen, da to stori pod naslednjimi pogoji: * * Zgornje obvestilo o avtorskih pravicah in to obvestilo o dovoljenju bo vključeno v vse * kopije ali znatne dele programske opreme. * * PROGRAMSKA OPREMA JE NAMENJENA "KAKŠNA", BREZ GARANCIJE KAKRŠNEGA, IZRESNEGA ALI * IMPLICIRANEGA, VKLJUČNO, NE OMEJUJUJO SE NA JAMSTVA TRGOVINE, * PRIMERNOSTI ZA POSEBNE NAMENE IN NEINFRING. V nobenem primeru * avtorji ali imetniki avtorskih pravic ne odgovarjajo za kakršne koli zahtevke, škodo ali drugo * odgovornost, ne glede na pogodbeno dejanje, odškodnino ali drugače, ki izvira iz ali zunaj programske opreme ali v povezavi z nami ali drugače POSLOVANJE V * PROGRAMSKI OPREMI. * *
/ Vključi pravilno knjižnico zaslona
// Za povezavo prek I2C z uporabo Wire vključite #include // za I2C Wire #include "SSD1306.h" // vzdevek za `#include" SSD1306Wire.h ""
// Vključi slike po meri
#include "images.h"
// Z uporabo hitro_i2c inicializirajte zaslon OLED
// D3 -> SDA // D5 -> SCL // Zaslon SSD1306 (0x3c, D1, D2); ali zaslon SSD1306 (0x3c, 5, 4); ali zaslon SSD1306 (0x3c, GPIO5, GPIO4);
**************************************************************************************************
An der folgenden Stelle werden dann die PINs for die I2C Schnittstelle configuriert
// Inicializirajte zaslon OLED z uporabo knjižnice Wire
Zaslon SSD1306 (0x3c, D1, D2);
***************************************************************************************************
#define DEMO_DURATION 3000
typedef void (*Demo) (void);
int demoMode = 0;
int števec = 1;
void setup () {
Serial.begin (9600); Serial.println ("OLED_DEMO"); Serial.println ("Začni DEMO");
// Inicializacija uporabniškega vmesnika bo sprožila tudi prikaz.
display.init ();
display.flipScreenVertical ();
display.setFont (ArialMT_Plain_10);
}
void drawFontFaceDemo () {
// Pisava Demo1 Serial.println ("Pisava DEMO 1"); // ustvarite več pisav na naslovu 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, "Roboti so / n Prihodnost in Prihodnost, je zdaj. Ampak ne pozabite na naravo"); }
void drawTextAlignmentDemo () {
Serial.println ("drawTextAlignmentDemo"); // demonstracijski prikaz poravnave besedila.setFont (ArialMT_Plain_10); // Schriftart und -größe einstellen
// Koordinate določajo levo izhodišče besedila
display.setTextAlignment (TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString (0, 10, "Poravnano levo (0, 10)");
// Koordinate določajo središče besedila
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 22, "Poravnano po sredini (64, 22)");
// Koordinate določajo desni konec besedila
display.setTextAlignment (TEXT_ALIGN_RIGHT); display.drawString (128, 33, "Poravnano desno (128, 33)"); }
void drawRectDemo () {
Serial.println ("drawRectDemo"); // Nariši slikovno piko na danem položaju za (int i = 0; i <10; i ++) {display.setPixel (i, i); display.setPixel (10 - i, i); } display.drawRect (12, 12, 20, 20);
// Napolnite pravokotnik
display.fillRect (14, 14, 17, 17);
// Vodoravno narišimo črto
display.drawHorizontalLine (0, 40, 20);
// Vodoravno narišimo črto
display.drawVerticalLine (40, 0, 20); }
void drawCircleDemo () {
Serial.println ("drawCircleDemo"); for (int i = 1; i <8; i ++) {display.setColor (BELO); display.drawCircle (32, 32, i*3); if (i % 2 == 0) {display.setColor (ČRNO); } display.fillCircle (96, 32, 32 - i* 3); }}
void drawProgressBarDemo () {
Serial.println ("drawProgressBarDemo"); int napredek = (števec / 5) % 100; // narišemo prikaz vrstice napredka.drawProgressBar (0, 32, 120, 10, napredek);
// narišemo odstotek kot niz
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 15, String (napredek) + "%"); }
Der folgende Link im Commentar kann helfen ein Bild oder Logo so umzuwandeln, das es auf dem Display angezeigt werden kann…
void drawImageDemo () {
Serial.println ("drawImageDemo"); // glej https://blog.squix.org/2015/05/esp8266-nodemcu-how… // o tem, kako ustvariti datoteke xbm display.drawXbm (34, 0, Logo_width, Logo_height, Logo_bits); }
Demo demo = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof (demos) / sizeof (Demo)); dolgi časSinceLastModeSwitch = 0;
void loop () {
// počisti prikaz zaslona.clear (); // narišemo trenutne predstavitvene metode demo [demoMode] ();
display.setTextAlignment (TEXT_ALIGN_RIGHT);
display.drawString (10, 128, String (millis ())); // zapisujemo medpomnilnik na zaslon display.display ();
if (millis () - timeSinceLastModeSwitch> DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength; timeSinceLastModeSwitch = millis (); } števec ++; zamuda (10); }
4. korak: Orodja, povezave do 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