Forum: Mikrocontroller und Digitale Elektronik ESP32 von heltec mit Display


von Thomas H. (Firma: Megabricks GmbH) (doktory)


Lesenswert?

Hallo,

Ich habe ein ESP32 S3 von heltec gekauft und dieser hat ein Display mit 
eingebaut.
Dieser hier: https://heltec.org/project/wifi-kit-32-v3/

Nur wie bekomme ich den Display eingebunden? ich hab es über die 
Adafruit_SSD1306 probiert mit wire und gfx
doch es bleibt alles dunkel.
ist das einfach nur falsch oder hab ich eine falsche I2C Adresse?  es 
gibt keine fehlermeldung.

Evtl kann mir jemand helfen diesen Code so zu ergänzen das die Sachen 
die auf dem serial screen ausgegeben werden auch auf meinem Eingebauten 
Screen ausgegeben werden.

Ich habe bewusst meinen Code für die Screen einbindung raus genommen um 
keine verwirrung zu stiften.
Danke
1
#include <WiFi.h>
2
#include <WiFiClient.h>
3
#include <WiFiServer.h>
4
#include <WebServer.h>
5
#include <FastLED.h>
6
7
const char* ssid = "";
8
const char* password = "";
9
10
#define LED_PIN 4
11
#define NUM_LEDS 50
12
#define BRIGHTNESS 100
13
#define LED_TYPE WS2813
14
#define COLOR_ORDER GRB
15
CRGB leds[NUM_LEDS];
16
17
WebServer server(80);
18
19
int led1, led2;
20
21
struct LEDPair {
22
String code;
23
int led1;
24
int led2;
25
};
26
27
LEDPair pairs[] = {
28
{"A001", 0, 1},
29
{"A002", 2, 3},
30
{"A003", 4, 5},
31
{"A004", 3, 8},
32
{"A005", 2, 30},
33
{"A006", 0, 49},
34
};
35
36
void setup() {
37
Serial.begin(115200);
38
WiFi.begin(ssid, password);
39
40
while (WiFi.status() != WL_CONNECTED) {
41
delay(1000);
42
Serial.println("Connecting to WiFi...");
43
}
44
Serial.println("Connected to WiFi");
45
Serial.println("IP address: ");
46
Serial.println(WiFi.localIP());
47
48
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
49
FastLED.setBrightness(BRIGHTNESS);
50
51
server.on("/led", handleLedRequest);
52
server.begin();
53
Serial.println("HTTP server started");
54
}
55
56
void loop() {
57
server.handleClient();
58
59
for (int i = 0; i < NUM_LEDS; i++) {
60
if (i == led1 || i == led2) {
61
leds[i] = CRGB::Red;
62
} else {
63
leds[i] = CRGB::Black;
64
}
65
}
66
FastLED.show();
67
delay(500);
68
69
for (int i = 0; i < NUM_LEDS; i++) {
70
if (i == led1 || i == led2) {
71
leds[i] = CRGB::Black;
72
} else {
73
leds[i] = CRGB::Black;
74
}
75
}
76
FastLED.show();
77
delay(500);
78
}
79
80
void handleLedRequest() {
81
if (server.hasArg("ledpair")) {
82
String ledpair = server.arg("ledpair");
83
for (int i = 0; i < sizeof(pairs)/sizeof(LEDPair); i++) {
84
if (ledpair == pairs[i].code) {
85
led1 = pairs[i].led1;
86
led2 = pairs[i].led2;
87
break;
88
}
89
}
90
if (led1 >= 0 && led2 >= 0) {
91
server.send(200, "text/plain", "LEDs are blinking");
92
} else {
93
server.send(400, "text/plain", "Invalid request");
94
}
95
} else {
96
server.send(400, "text/plain", "Invalid request");
97
}
98
}

von Robert B. (crolexx)


Lesenswert?

eventuell helfen dir die folgenden Links weiter:
https://github.com/HelTecAutomation/Heltec_ESP32
https://github.com/HelTecAutomation/Heltec_ESP32/tree/master/examples/OLED

Sind übrigens auf der Shop-Seite verlinkt.

von Dieter (Gast)


Lesenswert?

Thomas H. schrieb:
> I2C Adresse

Lade mal den I2C Scanner aufs Board, der sollte die Adresse finden, 
falls es daran liegen sollte.

von Helmut -. (dc3yc)


Lesenswert?

Und beachte bitte die Regeln

Wichtige Regeln - erst lesen, dann posten!

    Groß- und Kleinschreibung verwenden
    Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Es macht wenig Spaß, immer im Fenster hin- und her zu scrollen. Danke.
Formatierung (Einrückung) könnte auch besser sein.

: Bearbeitet durch User
Beitrag #7344092 wurde von einem Moderator gelöscht.
von Monk (roehrmond)


Lesenswert?

Wahrscheinlich musst du die Pins einstellen, an denen das Display hängt.
https://docs.espressif.com/projects/arduino-esp32/en/latest/api/i2c.html

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

PepeTheSwiss schrieb im Beitrag #7344092:
> Helmut -. schrieb:
>>     Groß- und Kleinschreibung verwenden
>
> Warum denn?
> Sinn machtes 100% keinen.
> Asser deutschschreiber macht das auch niemand auf der welt.
>
> Gross/kleinschreibung ist genauso obsolet wie die sommerzeit.

Na, darfst du hier auch wieder schreiben, alter Ewiggestriger Frosch?

von Rudolph (Gast)


Lesenswert?

Ich habe
1
// Display
2
#include <U8g2lib.h>          // For text on the little on-chip OLED
3
#define OLED_CLOCK  15        // Pins for the OLED display
4
#define OLED_DATA   4         // https://github.com/olikraus/u8g2/wiki
5
#define OLED_RESET  16
6
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, OLED_RESET, OLED_CLOCK, OLED_DATA);

und
1
void setup() {
2
  // Setup OLED Display
3
  u8g2.begin();
4
}

Das sollte zumindest die Pins klären.

von Monk (roehrmond)


Lesenswert?

Thomas H. schrieb:
> Nur wie bekomme ich den Display eingebunden? ich hab es über die
> Adafruit_SSD1306 probiert mit wire und gfx doch es bleibt alles dunkel.

> Ich habe bewusst meinen Code für die Screen einbindung raus genommen um
> keine verwirrung zu stiften.

Muss man die Logik hinter der Aktion verstehen?

von Rudolph (Gast)


Lesenswert?

Rudolph schrieb:
> Ich habe

Korrektur: ich habe ein V2.1. Offenbar haben sich zur aktuellen 3.0 die 
Pins geändert, die Pinout-Diagramme sind jedenfalls anders nummeriert.

Beitrag #7344155 wurde von einem Moderator gelöscht.
von Monk (roehrmond)


Lesenswert?

Rudolph schrieb:
> Offenbar haben sich zur aktuellen 3.0 die Pins geändert

Ah OK, also der gleiche Sch*** wie bei den ähnlichen Modulen mit 
ESP8266.

Beitrag #7344167 wurde von einem Moderator gelöscht.
Beitrag #7344188 wurde von einem Moderator gelöscht.
Beitrag #7344198 wurde von einem Moderator gelöscht.
Beitrag #7344304 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.