Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hallå, hier möchte ich Euch zeigen wie Ihr das mit auf der Hauptplatine verbaute OLED Display benutzen/ansteuern könnt. Om det bara är möjligt att använda, kan du använda ARDUINO GUI för schreiben des CODEs och zum hochladen der Firmware.
Steg 1: Einstellen / Einrichten Der ARDUINO GUI
Als erstes muss das ESP8266 Board in der ARDUINO GUI tillgängliga gemacht werden 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
- Dann "esp8266 by ESP8266 Community" uteslutande och aktuell version Version (Bild 4)
- Die ARDUINO GUI kan inte startas
- Danach das passende Board auswählen (z. B.: WeMos D1 R2 & mini)
Steg 2: I2C Schnittstelle Scannen
Om du vill se en PIN-kod för OLED-display kan du enkelt skanna I2C-Schnittstelle. Så können wir auch sehen ob noch weitere I2C-Parts angeschlossen sind.
Den Sketch (Bild 1) auf den ESP Hochladen, den "Seriellen-Monitor" öffnen och auf die Ausgabe warten. Dort könnt Ihr dann sehen, welches Device wo gefunden wurde. (Bild 2 - DigitalPIN Scan)
Das Ergebnis merken.
I diesem Fall: SDA = D1: SCL = D2 på Adresse 0x3c
Steg 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.
Även die Konfiguration für die I2C-Schnittstelle.
Aus diesem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLEDs possible.
/** * MIT -licensen (MIT) * * Upphovsrätt (c) 2016 av Daniel Eichhorn * * Tillstånd beviljas härmed kostnadsfritt till alla som erhåller en kopia * av denna programvara och tillhörande dokumentationsfiler ("programvaran")), att handla * i Programvaran utan begränsning, inklusive utan begränsning rättigheterna * att använda, kopiera, modifiera, slå samman, publicera, distribuera, underlicensiera och/eller sälja * kopior av Programvaran och att tillåta personer till vilka Programvaran är * förberedd för att göra detta, med förbehåll för följande villkor: * * Ovanstående upphovsrättsmeddelande och detta tillståndsmeddelande ska inkluderas i alla * kopior eller väsentliga delar av programvaran. * * PROGRAMVARAN TILLHANDAHÅLLS "SOM DEN ÄR", UTAN GARANTI AV NÅGON SOM UTTRYCKT ELLER UNDERFÖRSTÅT, INKLUSIVE MEN INTE BEGRÄNSADE TILL GARANTIER FÖR SÄLJABILITET, * KRAV FÖR ETT SÄRSKILT SYFTE OCH INTE FRÅN. INGEN HÄNDELSER SKA * FÖRFATTARNA ELLER UPPHOVSRÄTTIGHETERNA ANSVARLIGA FÖR NÅGOT ANSVAR, SKADOR ELLER ANNAN * ANSVAR, VAD SOM INNEHÅLLER AV KONTRAKT, TORT ELLER ANNAN, FRÅN, * UTAN ELLER ANSLUTNING MED PROGRAMVARAN ELLER ANNAN HANDLINGAR I * PROGRAMVARAN. * *
/ Inkludera rätt bildskärmsbibliotek
// För en anslutning via I2C med Wire inkluderar #include // för I2C Wire #include "SSD1306.h" // alias för `#include" SSD1306Wire.h "`
// Inkludera anpassade bilder
#inkludera "images.h"
// Initiera OLED -skärmen med brzo_i2c
// D3 -> SDA // D5 -> SCL // SSD1306 display (0x3c, D1, D2); eller SSD1306 -skärm (0x3c, 5, 4); eller SSD1306 -skärm (0x3c, GPIO5, GPIO4);
**************************************************************************************************
An der folgenden Stelle werden dann the PINs for the I2C Schnittstelle konfiguriert
// Initiera OLED -skärmen med hjälp av Wire -biblioteket
SSD1306 -skärm (0x3c, D1, D2);
***************************************************************************************************
#define DEMO_DURATION 3000
typedef void (*Demo) (void);
int demoMode = 0;
int räknare = 1;
void setup () {
Serial.begin (9600); Serial.println ("OLED_DEMO"); Serial.println ("Starta DEMO");
// Initialisering av användargränssnittet initierar också skärmen.
display.init ();
display.flipScreenVertically ();
display.setFont (ArialMT_Plain_10);
}
void drawFontFaceDemo () {
// Font Demo1 Serial.println ("Font DEMO 1"); // skapa fler teckensnitt på 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, "Robotar är / n Framtiden och framtiden är nu. Men glöm inte naturen"); }
void drawTextAlignmentDemo () {
Serial.println ("drawTextAlignmentDemo"); // Textjustering demo display.setFont (ArialMT_Plain_10); // Schriftart und -größe einstellen
// Koordinaterna definierar textens vänstra startpunkt
display.setTextAlignment (TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString (0, 10, "Vänsterjusterad (0, 10)");
// Koordinaterna definierar mitten av texten
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 22, "Centrerad (64, 22)");
// Koordinaterna definierar den högra änden av texten
display.setTextAlignment (TEXT_ALIGN_RIGHT); display.drawString (128, 33, "Högerjusterad (128, 33)"); }
void drawRectDemo () {
Serial.println ("drawRectDemo"); // Rita en pixel vid given position för (int i = 0; i <10; i ++) {display.setPixel (i, i); display.setPixel (10 - i, i); } display.drawRect (12, 12, 20, 20);
// Fyll rektangeln
display.fillRect (14, 14, 17, 17);
// Rita en linje horisontellt
display.drawHorizontalLine (0, 40, 20);
// Rita en linje horisontellt
display.drawVerticalLine (40, 0, 20); }
void drawCircleDemo () {
Serial.println ("drawCircleDemo"); för (int i = 1; i <8; i ++) {display.setColor (WHITE); display.drawCircle (32, 32, i*3); if (i % 2 == 0) {display.setColor (SVART); } display.fillCircle (96, 32, 32 - i* 3); }}
void drawProgressBarDemo () {
Serial.println ("drawProgressBarDemo"); int framsteg = (räknare / 5) % 100; // rita framstegsfältet display.drawProgressBar (0, 32, 120, 10, progress);
// rita procenten som sträng
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 15, String (progress) + "%"); }
Följande länk med kommentarer kan vara en bild eller logotyp så att vi kan använda dem för att visa att de kan bli …
void drawImageDemo () {
Serial.println ("drawImageDemo"); // se https://blog.squix.org/2015/05/esp8266-nodemcu-how… // om hur man skapar xbm-filer display.drawXbm (34, 0, Logo_width, Logo_height, Logo_bits); }
Demo demos = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof (demos) / sizeof (Demo)); long timeSinceLastModeSwitch = 0;
void loop () {
// rensa displayen display.clear (); // rita den nuvarande demometoden demos [demoMode] ();
display.setTextAlignment (TEXT_ALIGN_RIGHT);
display.drawString (10, 128, String (millis ())); // skriva bufferten till displayen display.display ();
if (millis () - timeSinceLastModeSwitch> DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength; timeSinceLastModeSwitch = millis (); } räknare ++; fördröjning (10); }
Steg 4: Tools, Links Und Herkunft/Literaturhinweis
Ich möchte mich bei allen bedanken die an dem ein or others Code with 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