Inhaltsverzeichnis:
- Schritt 1: Einstellen / Einrichten Der ARDUINO GUI
- Schritt 2: I2C Schnittstelle Scannen
- Schritt 3: Demo-Sketch Anpassen Und Auf Den ESP Hochladen
- Schritt 4: Tools, Links und Herkunft/Literaturhinweis
Video: HowTo - Esp-12F Mini WiFi Modul ESP8266 18650 Nodemcu Batterie 0,96" OLED DEMO über Arduino GUI - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
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.
Schritt 1: Einstellen / Einrichten Der ARDUINO GUI
Als erstes muss das ESP8266 Board in 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
- 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 & mini)
Schritt 2: I2C Schnittstelle Scannen
Um zu sehen, welche PINs das OLED-Display angeschlossen wurde, scannen wir zuerst die I2C-Schnittstelle. So can 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 kannst du dann sehen, welches Gerät wo gefunden wurde. (Bild 2 - DigitalPIN-Scan)
Das Ergebnis merken.
In diesem Fall: SDA = D1: SCL = D2 bei Adresse 0x3c
Schritt 3: Demo-Sketch Anpassen Und Auf Den ESP Hochladen
Das ist der Code für das OLED-Display DEMO
Im 5. Abschnitt findet Ihr sterben Stelle an der Code ggf. modifiziert werden muss.
Auch die Konfiguration für die I2C-Schnittstelle.
Aus diesem Code können Sie auch viele Infos über die Benutzung eines OLEDs ableiten.
/** * Die MIT-Lizenz (MIT) * * Copyright (c) 2016 by Daniel Eichhorn * * Hiermit wird jeder Person, die eine Kopie * dieser Software und der zugehörigen Dokumentationsdateien (die "Software"), ohne Einschränkung * mit der Software zu handeln, einschließlich und ohne Einschränkung der Rechte * zur Nutzung, zum Kopieren, Modifizieren, Zusammenführen, Veröffentlichen, Verteilen, Unterlizenzieren und/oder Verkaufen * von Kopien der Software, und Personen zu gestatten, denen die Software wird * dazu bereitgestellt, vorbehaltlich der folgenden Bedingungen: * * Der obige Copyright-Hinweis und dieser Erlaubnishinweis müssen in alle * Kopien oder wesentlichen Teile der Software aufgenommen werden. * * DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER * STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTFÄHIGKEIT, * EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG DER GEWÄHRLEISTUNG. IN KEINEM FALL HAFTET DIE * AUTOREN ODER URHEBERRECHTSINHABER FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE * HAFTUNG, OB AUS VERTRAGLICHEM, SCHLECHTER ODER ANDERWEITIGEN, * AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREM HANDELN IN DER * SOFTWARE. * *
/ Fügen Sie die richtige Anzeigebibliothek hinzu
// Für eine Verbindung über I2C mit Wire include #include // für I2C Wire #include "SSD1306.h" // Alias für `#include "SSD1306Wire.h"`
// Benutzerdefinierte Bilder einfügen
#include "images.h"
// Initialisieren Sie das OLED-Display mit brzo_i2c
// D3 -> SDA // D5 -> SCL // SSD1306-Anzeige (0x3c, D1, D2); oder SSD1306-Anzeige (0x3c, 5, 4); oder SSD1306-Anzeige (0x3c, GPIO5, GPIO4);
**************************************************************************************************
An der following Stelle Werden Dann sterben PINs für die I2C Schnittstelle konfiguriert
// Initialisieren Sie das OLED-Display mit der Wire-Bibliothek
SSD1306-Anzeige (0x3c, D1, D2);
***************************************************************************************************
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int DemoMode = 0;
int-Zähler = 1;
Leere Einrichtung () {
Serial.begin (9600); Serial.println("OLED_DEMO"); Serial.println ("Starte die DEMO");
// Durch Initialisieren der Benutzeroberfläche wird auch die Anzeige initialisiert.
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void drawFontFaceDemo() {
// Schriftart Demo1 Serial.println ("Schrift DEMO 1"); // weitere Schriftarten erstellen unter 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, "Roboter sind \n die Zukunft, und die Zukunft ist jetzt. Aber vergiss die Natur nicht"); }
void drawTextAlignmentDemo() {
Serial.println ("drawTextAlignmentDemo"); // Demo zur Textausrichtung display.setFont(ArialMT_Plain_10); // Schriftart und -größe einstellen
// Die Koordinaten definieren den linken Anfangspunkt des Textes
display.setTextAlignment(TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString(0, 10, "linksbündig (0, 10)");
// Die Koordinaten definieren den Mittelpunkt des Textes
display.setTextAlignment(TEXT_ALIGN_CENTER); display.drawString(64, 22, "Mittig ausgerichtet (64, 22)");
// Die Koordinaten definieren das rechte Ende des Textes
display.setTextAlignment(TEXT_ALIGN_RIGHT); display.drawString(128, 33, "Rechtsbündig (128, 33)"); }
void drawRectDemo() {
Serial.println ("drawRectDemo"); // Zeichnen Sie ein Pixel an einer bestimmten Position für (int i = 0; i < 10; i++) { display.setPixel(i, i); display.setPixel(10 - i, i); } display.drawRect(12, 12, 20, 20);
// Fülle das Rechteck aus
display.fillRect(14, 14, 17, 17);
// Ziehe eine Linie horizontal
display.drawHorizontalLine(0, 40, 20);
// Ziehe eine Linie horizontal
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 (BLACK); } display.fillCircle(96, 32, 32 - i* 3); } }
void drawProgressBarDemo() {
Serial.println ("drawProgressBarDemo"); int progress = (Zähler / 5) % 100; // den Fortschrittsbalken zeichnen display.drawProgressBar(0, 32, 120, 10, progress);
// Zeichne den Prozentsatz als String
display.setTextAlignment(TEXT_ALIGN_CENTER); display.drawString(64, 15, String(Fortschritt) + "%"); }
Der folgende Link im Kommentar kann helfen ein Bild oder Logo so umzuwandeln, das es auf dem Display angezeigt werden kann …
void drawImageDemo() {
Serial.println ("drawImageDemo"); // siehe https://blog.squix.org/2015/05/esp8266-nodemcu-how… // zum Erstellen von xbm-Dateien 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)); langes timeSinceLastModeSwitch = 0;
Leere Schleife () {
// Anzeige löschen display.clear(); // Zeichne die aktuelle Demo-Methode demos[demoMode]();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis())); // den Puffer in das Display schreiben display.display();
if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength; timeSinceLastModeSwitch = millis(); } Zähler++; Verzögerung(10); }
Schritt 4: Tools, Links 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
Empfohlen:
Einen Stromzähler über Arduino auslesen – wikiHow
So lesen Sie einen Stromzähler über Arduino aus: Oft wäre es interessant, den aktuellen Stromverbrauch oder den Gesamtstromverbrauch Ihres Hauses zu kennen, um Ihre Stromkosten zu begrenzen und die Umwelt zu schonen. Das ist kein wirkliches Problem, denn meistens findet man ein smartes digitales el
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte
Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i
Bauen Sie Ihren eigenen ""Banksys Self-Destruct Artwork Frame"": 4 Schritte
Bauen Sie Ihren eigenen ""Banksys Self-Destruct Artwork Frame": Als sich das Balloon Girl nach einem Schlag von 1,4 Millionen Dollar selbst zerschredderte, begannen unsere inneren Macher zu analysieren, wie es gemacht wird. Wir hatten 2 anfängliche Ideen im Kopf: Die erste war die Klingen wurden an der Basis des Rahmens und zwei Rädern befestigt
Steuern Sie Geräte über das Internet über den Browser. (IoT): 6 Schritte
Steuern Sie Geräte über das Internet über den Browser. (IoT): In diesem Instructable zeige ich Ihnen, wie Sie Geräte wie LEDs, Relais, Motoren usw. über das Internet über einen Webbrowser steuern können. Und Sie können über jedes Gerät sicher auf die Bedienelemente zugreifen. Die Webplattform, die ich hier verwendet habe, ist RemoteMe.org visit
HRV-Temperatur zu OpenHAB über ESP8266 (Seriencode-Beispiel!): 3 Schritte
HRV-Temperatur zu OpenHAB über ESP8266 (Seriencode-Beispiel!): HRV - Drahtlos zu OpenHABDieses anweisbare ist speziell für diejenigen gedacht, die ein HRV-System (Heizungs-Umluft-Belüftung) haben - obwohl Teile der Platine, Openhab-Konfiguration oder Arduino-Code (wie Lesen) serielle TTL-Daten) könnte h