Hallo liebe Coder,
ich hatte vor Jahren meiner Freundin ein selbstgebautes Herz mit LED Beleuchtung geschenkt. Nach einiger Zeit ist leider das Kabel von der Buchse abgerissen. Nach dem erneuten Löten leuchtete es nur noch in der Farbe Weiß.
Aufbau ist 12V-RGB-LED mit ESP8266 und Step-Down-Wandler, Widerstände und Transistoren.
Folgende Sachen habe ich überprüft:
- neuer ESP mit alter Programmierung / LED leuchten Weiß
- neuer ESP ohne Programmierung / LED leuchten Weiß
- ohne ESP - Pin 5Vin nach D1/D2/D3/D5/D6 und D7 verbunden / LED leuchten in den korrekten Farben
Somit scheint das Board keinen Fehler zu haben. Warum die LED`s jetzt alle gleichzeitig leuchten verstehe ich nicht.
Programm war das Gleiche. Dann nur alle Pins auf LOW gestellt ohne weiteren Code, bzw Code nur mit Setup und Loop und es leuchten immer alle LED`s.
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
const char* ssid = "WiFii";
const char* password = "xxxxxxxxxxxxx";
// Port für den Server
WiFiServer server(80);
// Variabel für die Webseitenantwort
String header;
// Status der einzelnen Variabeln auf der Hohmpage
String blau1PinStat = "off";
String rot1PinStat = "off";
String gruen1PinStat = "off";
String blau2PinStat = "off";
String rot2PinStat = "off";
String gruen2PinStat = "off";
/*
PinBelegung D1 MIni ESP8266
D0 = 16 HIGH beim booten / kein PWM und I2C
D1 = 5 HIGH beim booten /
D2 = 4
D3 = 0
D4 = 2 Kann nicht botten wenn auf LOW
D5 = 14 SPI
D6 = 12 SPI
D7 = 13 SPI
D8 = 15 SPI / Kann nicht booten wenn auf HIGH
RX = 3 HIGH beim booten / Serieller Pin zum Senden von Daten
TX = 1 HIGH beim booten / Serieller Pin zum Empfang von Daten
A0 = nur Eingang
*/
const int blau1Pin = 14;
const int rot1Pin = 12;
const int gruen1Pin = 5;
const int blau2Pin = 4;
const int rot2Pin = 0;
const int gruen2Pin = 13;
int rot = 0;
int gruen = 0;
int blau = 0;
int farbe = 0;
int schleife = 1;
// Aktuelle Zeit
unsigned long currentTime = millis();
// Zeitwert
unsigned long previousTime = 0;
// Zeitdifferenz die vergehen soll
const long timeoutTime = 50;
void herz(int frb1, int frb2, int frb3, int frb4, int frb5, int frb6) {
analogWrite(rot1Pin, frb1);
analogWrite(gruen1Pin, frb2);
analogWrite(blau1Pin, frb3);
analogWrite(rot2Pin, frb4);
analogWrite(gruen2Pin, frb5);
analogWrite(blau2Pin, frb6);
delay(10);
}
void farbWechsel() {
farbe++;
int y = farbe / 255;
int z = farbe % 255;
switch (y) {
case 0: // von weiß nach rot
herz(255, 255 - z, 255 - z, 255, 255 - z, 255 - z);
break;
case 1: // von rot nach
herz(255, z, 0, 255, z, 0);
break;
case 2: // von nach gruen
herz(255 - z, 255, 0, 255 - z, 255, 0);
break;
case 3: // von gruen nach
herz(0, 255, z, 0, 255, z);
break;
case 4: // von nach blau
herz(0, 255 - z, 255, 0, 255 - z, 255);
break;
case 5:
herz(z, 0, 255, z, 0, 255);
break;
case 6:
herz(255, z, 255, 255, z, 255);
break;
case 7: // von weiß nach rot
herz(255, 255 - z, 255 - z, 255, 255 - z, 255 - z);
break;
}
}
void aus(){
analogWrite(rot1Pin, 0);
analogWrite(gruen1Pin, 0);
analogWrite(blau1Pin, 0);
analogWrite(rot2Pin, 0);
analogWrite(gruen2Pin, 0);
analogWrite(blau2Pin, 0);
}
void setup() {
Serial.begin(115200);
// Pin als Ausgang festlegen
pinMode(rot1Pin, OUTPUT);
pinMode(gruen1Pin, OUTPUT);
pinMode(blau1Pin, OUTPUT);
pinMode(rot2Pin, OUTPUT);
pinMode(gruen2Pin, OUTPUT);
pinMode(blau2Pin, OUTPUT);
// Ausgangspin auf LOW und HIGH setzen
digitalWrite(rot1Pin, HIGH);
digitalWrite(gruen1Pin, LOW);
digitalWrite(blau1Pin, LOW);
digitalWrite(rot2Pin, HIGH);
digitalWrite(gruen2Pin, LOW);
digitalWrite(blau2Pin, LOW);
// Wifi starten
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
ArduinoOTA.setHostname("ESP8266Herz");
ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_FS
type = "filesystem";
}
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
digitalWrite(rot1Pin, LOW);
digitalWrite(gruen1Pin, HIGH);
digitalWrite(blau1Pin, LOW);
digitalWrite(rot2Pin, LOW);
digitalWrite(gruen2Pin, HIGH);
digitalWrite(blau2Pin, LOW);
}
void loop() {
ArduinoOTA.handle();
switch (schleife){
case 0:
aus();
break;
case 1:
if (currentTime + timeoutTime < millis()) {
currentTime = millis();
if (farbe < 2040){
farbWechsel();
}
else{
farbe = 0;
farbWechsel();
}
}
break;
}
}


