Krippenprojekt mit LED und Schieberegler flackert

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();

}

adressierbar?

hast du Schema?

Wie werden die LEDs mit Strom versorgt?

Das ist allerdings ein 3,3-V-Modul. Sie sollten einen TTL-Chip wie einen 74HCT04 verwenden (und das Signal durch zwei Tore leiten), der mit 5 V versorgt wird. Um das Ausgangssignal auf 5 V zu bringen.

nimm einen anderen Pin für den Stripe

Das wirkt sich auch auf deine LED-Stripes aus. Während der Zeit macht der Prozessor nichts anderes, steuert also auch deine LED-Streifen nicht an.

Das macht nichts, da es keine Änderung gibt.

Hi,
danke für Eure Hilfe!
Der Wemos hat 5v out und wird per USB mit Strom versorgt. Ich habe mal auf Pin D4 (GPIO2) abgeändert. Die LED Stripes sind Adressierbar.
Das Flackern der roten Feuer LEDs funktioniert gut, nur soll sich das geflackere natürlich nicht auf Pin 2 auswirken. Das Random ist ja nur in der Funktion feuer, da sollte eigentlich nichts auf die andere Funktion übertragen werden...
Im SerialPrint wird auch nur der Wert des Schiebereglers übertragen, keine Zufallszahlen.

Kein WEMOS hat 5V Output

Gruß Tommy

was ist Pin 2?
hast du Schema?

Wie machst du das? Fehlt da was im Code?

Hmm, wenn auf der Platine 5V draufsteht, sollte auch 5V rauskommen...

Funktioniert ja auch und Messgerät sagt das auch...

Du solltest dich zwingend mal mit dem Datenblatt auseinander setzen bzw. genau durchlesen und versuchen zu verstehen.

Dann ist dein Messgerät kaputt.

Fakt ist, ein ESP8266 wird mit 3,3Volt gespeist und mehr kann dieser nicht raus geben.

1 Like

Äh?
Pin2 ist GPIO2 ist D4? Signalleitung für LED Strip? Steht doch so im Code?
Port 15 und Port 13 die Ausgänge für die beiden Lagerfeuer LED. Steht auch im Code

5v und GND sind auch angeschlossen. Also eigentlich nur 3 Kabel, wenn die Lagerfeuer LED nicht angeschlossen sind. Trotzdem flackern die LED. Kann nur am Code liegen.

Und was bitte soll das sein?

Nein, Pin 2 ist ADC = A0.

Okay, aber bei 3V flackert es auch. Und es flackert nicht, wenn ich die FEUER Routine auskommentiere. Daran kann es also nicht liegen...

Wieso bist du da so sicher ?
Wenn dein Stripe eine falsche Steuerspannung bekommt, arbeitet der nicht stabil.

Das Dimmen geschieht über einen Schieberegler über den Webserver. Ohne die FEUER Routine funktioniert es tadellos und in Echtzeit.

Weil der Strip - egal wie ich dimme und FEUER aus ist- konstant in einer Farbe bleibt. Auch wenn FEUER aus ist. Wenn FEUER an ist, flackern selbst bei Helligkeit 0 die Farben zufällig.