Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Hola, hier möchte ich Euch zeigen wie Ihr das mit auf der Hauptplatine verbaute Pantalla OLED 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.
Paso 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 (Imagen 2). Damit bekommen wir den benötigten Zugang zu dem attenden Boardtreiber.
Jetzt können wir den Passenden Boardtreiber installieren
(Tablero de Werkzeuge: Boardverwaltung / Bild 3)
- Dort im Suchfeld "esp8266" eintragen
- Dann "esp8266 por la comunidad ESP8266" auswählen und die aktuellste Version installieren (Bild 4)
- Muere ARDUINO GUI neu starten
- Junta de pasajeros de Danach das auswählen (z. B.: WeMos D1 R2 y mini)
Paso 2: I2C Schnittstelle Scannen
Um zu sehen an welche PINs das OLED-Display angeschlossen wurde, scannen wir zuerst die I2C-Schnittstelle. So können 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 könnt Ihr dann sehen, welches Device wo gefunden wurde. (Imagen 2 - DigitalPIN Scan)
Das Ergebnis merken.
En otoño diesem: SDA = D1: SCL = D2 bei Adresse 0x3c
Paso 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 Code ggf. modifiziert werden muss.
También muere Konfiguration für die I2C-Schnittstelle.
Aus diesem Code könnt Ihr euch auch viele Infos über die Benutzung eines OLEDs ableiten.
/ ** * La licencia MIT (MIT) * * Copyright (c) 2016 de Daniel Eichhorn * * Por la presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia * de este software y los archivos de documentación asociados (el "Software"), para negociar * en el Software sin restricción, incluidos, entre otros, los derechos * para usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y / o vender * copias del Software, y para permitir a las personas a quienes el Software se * proporciona para hacerlo, sujeto a las siguientes condiciones: * * El aviso de copyright anterior y este aviso de permiso se incluirán en todas * las copias o partes sustanciales del Software. * * EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O * IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, * IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS * AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑOS U OTRA * RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, * FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTROS NEGOCIACIONES EN EL SOFTWARE *. * *
/ Incluir la biblioteca de visualización correcta
// Para una conexión a través de I2C usando Wire, incluya #include // para I2C Wire #include "SSD1306.h" // alias para `#include" SSD1306Wire.h "`
// Incluir imágenes personalizadas
#include "images.h"
// Inicializa la pantalla OLED usando brzo_i2c
// D3 -> SDA // D5 -> SCL // Pantalla SSD1306 (0x3c, D1, D2); o pantalla SSD1306 (0x3c, 5, 4); o pantalla SSD1306 (0x3c, GPIO5, GPIO4);
**************************************************************************************************
An der folgenden Stelle werden dann die PINs für die I2C Schnittstelle konfiguriert
// Inicialice la pantalla OLED usando la biblioteca Wire
Pantalla SSD1306 (0x3c, D1, D2);
***************************************************************************************************
#define DEMO_DURATION 3000
typedef void (* Demo) (void);
int demoMode = 0;
int contador = 1;
configuración vacía () {
Serial.begin (9600); Serial.println ("OLED_DEMO"); Serial.println ("Iniciar la DEMO");
// La inicialización de la interfaz de usuario también iniciará la visualización.
display.init ();
display.flipScreenVertically ();
display.setFont (ArialMT_Plain_10);
}
void drawFontFaceDemo () {
// Font Demo1 Serial.println ("Font Demo 1"); // cree más fuentes en 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 ("dibujarTextFlowDemo"); display.setFont (ArialMT_Plain_10); display.setTextAlignment (TEXT_ALIGN_LEFT); display.drawStringMaxWidth (0, 0, 128, "Los robots son / n el futuro, y el futuro es ahora. Pero no olvides la naturaleza"); }
void drawTextAlignmentDemo () {
Serial.println ("drawTextAlignmentDemo"); // Display de demostración de alineación de texto.setFont (ArialMT_Plain_10); // Schriftart und -größe einstellen
// Las coordenadas definen el punto de inicio izquierdo del texto
display.setTextAlignment (TEXT_ALIGN_LEFT); // Text_Ausrichtung einstellen display.drawString (0, 10, "Alineado a la izquierda (0, 10)");
// Las coordenadas definen el centro del texto
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 22, "Alineado al centro (64, 22)");
// Las coordenadas definen el extremo derecho del texto
display.setTextAlignment (TEXT_ALIGN_RIGHT); display.drawString (128, 33, "Alineado a la derecha (128, 33)"); }
void drawRectDemo () {
Serial.println ("drawRectDemo"); // Dibuja un píxel en la posición dada para (int i = 0; i <10; i ++) {display.setPixel (i, i); display.setPixel (10 - i, i); } display.drawRect (12, 12, 20, 20);
// Rellena el rectángulo
display.fillRect (14, 14, 17, 17);
// Dibuja una línea horizontalmente
display.drawHorizontalLine (0, 40, 20);
// Dibuja una línea horizontalmente
display.drawVerticalLine (40, 0, 20); }
void drawCircleDemo () {
Serial.println ("drawCircleDemo"); para (int i = 1; i <8; i ++) {display.setColor (BLANCO); display.drawCircle (32, 32, i * 3); if (i% 2 == 0) {display.setColor (NEGRO); } display.fillCircle (96, 32, 32 - i * 3); }}
void drawProgressBarDemo () {
Serial.println ("drawProgressBarDemo"); int progreso = (contador / 5)% 100; // dibuja la barra de progreso display.drawProgressBar (0, 32, 120, 10, progreso);
// dibuja el porcentaje como String
display.setTextAlignment (TEXT_ALIGN_CENTER); display.drawString (64, 15, String (progreso) + "%"); }
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"); // ver https://blog.squix.org/2015/05/esp8266-nodemcu-how… // sobre cómo crear archivos xbm display.drawXbm (34, 0, Logo_width, Logo_height, Logo_bits); }
Demostraciones de demostración = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof (demos) / sizeof (Demo)); long timeSinceLastModeSwitch = 0;
bucle vacío () {
// limpia la pantalla display.clear (); // dibuja el método de demostración actual demos [demoMode] ();
display.setTextAlignment (TEXT_ALIGN_RIGHT);
display.drawString (10, 128, String (millis ())); // escribe el búfer en la pantalla display.display ();
if (millis () - timeSinceLastModeSwitch> DEMO_DURATION) {
demoMode = (demoMode + 1)% demoLength; timeSinceLastModeSwitch = millis (); } contador ++; retraso (10); }
Paso 4: Herramientas, enlaces y 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