Hallo und frohe Weihnachten gehabt zu haben!
Ich pimpe grad unsere Weihnachtskrippe und habe mir dazu ein paar Adafruit LED Stripes zurechtgeschnippelt und mit einzelnen LEDs ein Lagerfeuer gebastelt. Das Lagerfeuer wird mit random Werten befeuert...
Angeschlossen ist es über einen Wemos D1 mini ESP 8266
Zu guter letzt möchte ich die LED Stripes per Web und Schieberegler gerne dimmen ( im ersten Schritt). Wenn ich nun aber das Lagerfeuer zusammen mit den LED Stripes im Betrieb habe, gibt es Party bei den LEDs, obwohl die an einem anderen Pin angesteuert werden. Alle Farben flackern zufällig.
Nehme ich das Lagerfeuer raus, funktioniert das Dimmen, so wie ich es möchte.
Ich schätze, dass das etwas mit den analogen Pins zu tun hat?
Wer hat da einen Tipp für mich?
Vielen Dank für Eure Hilfe!
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
const char* ssid = "hierbinich";
const char* password = "strenggeheim";
int ledPin = D4;
int HELLIGKEIT_STALL = 100;
ESP8266WebServer server(80);
#define FEUER_1 15
#define FEUER_2 13
// Which pin on the Arduino is connected to the NeoPixels?
#define PINSTALL 0 // STALL
#define NUMPIXELS_STALL 10 //5
#define ROT_STALL 250
#define GRUEN_STALL 160
#define BLAU_STALL 0
//#define HELLIGKEIT_STALL
Adafruit_NeoPixel pixelsSTALL(NUMPIXELS_STALL, PINSTALL, NEO_GRB + NEO_KHZ800);
void setup() {
// put your setup code here, to run once:
pixelsSTALL.begin();
stall();
pinMode(FEUER_1, OUTPUT);
pinMode(FEUER_2, OUTPUT);
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Mit Wifi verbinden
Serial.print("Verbinden mit: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi verbunden");
server.on("/", []() {
if (server.args()) {
uint16_t input;
digitalWrite(ledPin, input = server.arg(0).toInt());
HELLIGKEIT_STALL = input;
//Serial.printf("HELLIGKEIT_STALL: %d\n", HELLIGKEIT_STALL);
server.send(204);
}
else {
server.send(200, "text/html", "Stall: <input type='range' min='0' max='255' oninput='fetch(`? =` + value)'>");
}
});
server.begin();
Serial.println("Server gestartet");
// Print the IP address
Serial.print("Diese URL zum Verbinden aufrufen: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// put your main code here, to run repeatedly:
server.handleClient();
stall();
//h_stall();
feuer();
}
void feuer(){
analogWrite(FEUER_1, random(150));
analogWrite(FEUER_2, random(150));
delay(random(100));
}
void h_stall(){
pixelsSTALL.setBrightness(HELLIGKEIT_STALL);
pixelsSTALL.show();
Serial.printf("HELLIGKEIT_STALL: %d\n", HELLIGKEIT_STALL);
}
void stall(){
Serial.printf("HELLIGKEIT_STALL: %d\n", HELLIGKEIT_STALL);
pixelsSTALL.setBrightness(HELLIGKEIT_STALL);
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS_STALL; i++) { // For each pixel...
// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// Here we're using a moderately bright green color:
pixelsSTALL.setPixelColor(i, pixelsSTALL.Color(ROT_STALL,GRUEN_STALL,BLAU_STALL));
// Send the updated pixel colors to the hardware.
//delay(DELAYVAL); // Pause before next pass through loop
}
pixelsSTALL.show();
}