Frage (Problem löten?) zu LEDStreifen ws2815

Hallo in die Runde,
ich habe ein kleines Problem mit meinem LED Streifen (ws2815, 60 LEDs/m).
Von 6 Stücken die ich mir fertig gemacht habe, wollen 2 nach dem löten nicht mehr so wie sie sollen.
Bsp. ich gebe 57 LEDs an die leuchten sollen und er macht 58 an, habe ein zum probieren der nicht gelötet ist angeschlossen und es funktiniert ohne Probleme.
Es kann ja eigentlich nur am löten liegen, nur warum?
Lötstation ist Esra und Temperatur habe ich 300 Grad.
Jemand eine Idee was ich ändern soll?
Schönen Abend an alle

Die Zählung beginnt bei 0.
Hast Du das bedacht?

Ansonsten verstehe ich Deine Erklährung nicht.

6 Stücke: wie lang?
Wie zusammengelötet?
Wie angesteuert?

Grüße Uwe

von was? 6 von 1m Streifen oder von 6 einzelnen LEDs vom Streifen abgelötet?

6 Stücke mit 57 LEDs (knapp ein Meter) jeweils die ich mir fertig gelötet habe, davon funktionieren 4 ohne Probleme.
Bei 2 davon nicht, da da hängt er immer eine LED mehr ran(springt in den nächsten Streifen).
Gesteuert wird über ein ESP32, das funktioniert auch.
Habe auch mal eine LED mehr abgeschnitten bei denen die nicht gehen, aber das gleiche Problem.
Gelötet 12+ zu12+; GND zu GND usw usw

Zeig uns den Sketch und sag uns wie die Streifen angeschlossen hast.
Grüße Uwe

Du hast also 6 Stücke zu 57 WS2815 abgeschnitten und hintereinander geschaltet und immer 57 WS angesteuert.

Sind das wirklich 57 LED und nicht manchmal 56?

Grüße Uwe

Das liest sich nach Spannungsproblemen.
Die Spannung bricht zusammen, weil dein Netzteil nicht genug Strom liefert oder deine Kabel zu dünn sind.

Hast du auch den BIN richtig verdrahtet?

Netzteil > 1000uF ElKo 16V > LED Streifen
Ja es sind immer 57 LEDs, mehremals nachgezählt

@HotSystems
Netzteil ist Stark genug und Kabel ist AWG 20.
Ich hatte erst 59 LEDs, davon hatte ich 3 hintereinander geschaltet und ging, dann habe ich überall 2 LEDs abgeschnitten weil es sonst nicht ins U-Profil gepasst hätte. 2 Gehen davon der 3te nicht. Klemm ich ein neues dazwischen wo am ende noch nichts ran gelötet wurde geht es.
Daher meine Vermutung das es vom löten kommt.

config.h

#ifndef CONFIG_H
#define CONFIG_H

// WiFi-Einstellungen
#define WIFI_SSID "********"
#define WIFI_PASSWORD "*********"

// NTP-Server-Einstellungen
#define NTP_SERVER "pool.ntp.org"
#define GMT_OFFSET_SEC 3600  // GMT+1 für Deutschland
#define DAYLIGHT_OFFSET_SEC 3600  // Sommerzeit-Offset

// LED-Einstellungen
#define NUM_STAIRS 6 // Wieviel Treppenstufen
#define DATA_PIN 16

// Sensor-Pins
#define BOTTOM_SENSOR_PIN 22
#define TOP_SENSOR_PIN 23

// Konfigurationsoptionen
#define USE_RUNNING_LIGHT true // Lauflicht
#define LIGHT_DURATION 30  // in Sekunden
#define RUNNING_LIGHT_SPEED 0  // in Millisekunden
#define STAIR_DELAY 1000  // in Millisekunden

// Aktivitätszeiten
struct ActivityPeriod {
    int startMonth;
    int startDay;
    int startHour;
    int startMinute;
    int endMonth;
    int endDay;
    int endHour;
    int endMinute;
};

const ActivityPeriod ACTIVITY_PERIODS[] = {
    {1, 1, 16, 0, 3, 31, 7, 0},   // 1. Januar bis 31. März: 16:00 - 07:00 Uhr
    {4, 1, 20, 0, 9, 30, 8, 42},   // 1. April bis 30. September: 20:00 - 08:42 Uhr
    {10, 1, 16, 0, 12, 31, 7, 0}  // 1. Oktober bis 31. Dezember: 16:00 - 07:00 Uhr
};

#define NUM_ACTIVITY_PERIODS (sizeof(ACTIVITY_PERIODS) / sizeof(ActivityPeriod))

// Stufenkonfigurationen
struct StairConfig {
    int numLeds;
    uint8_t red;
    uint8_t green;
    uint8_t blue;
    uint8_t brightness;
    bool reverseDirection;
    bool keepGlowing;
    uint8_t glowBrightness;
    uint8_t glowRed;
    uint8_t glowGreen;
    uint8_t glowBlue;
};
// Beispiel: LEDs pro Stufe, Farbe je Stufe, Helligkeit für Stufe, Reverse Funktion Lauflicht, Afterglow-Einstellungen
const StairConfig STAIR_CONFIGS[] = {
    {57, 255,255,255, 155, true, true, 10, 255,255,255},
    {57, 0, 0, 255, 155, false, false, 0, 0, 0, 0},
    {57, 255,255,255, 205, true, true, 10, 255,255,255},
    {59, 0, 0, 255, 18, false, false, 0, 0, 0, 0},
    {59, 255, 147, 41, 155, false, true, 10, 0, 0, 50},
    {59, 0, 0, 255, 13, false, false, 0, 0, 0, 0}
};

#define NUM_STAIR_CONFIGS (sizeof(STAIR_CONFIGS) / sizeof(StairConfig))

#endif // CONFIG_H

Sketch Treppe

#include <WiFi.h>
#include <FastLED.h>
#include <vector>
#include "time.h"
#include "config.h"  

// Berechnung der Gesamtzahl der LEDs
int totalLeds = 0;
CRGB* leds;

// Vektor für Stufenkonfigurationen
std::vector<StairConfig> stairs(STAIR_CONFIGS, STAIR_CONFIGS + NUM_STAIR_CONFIGS);

// Vektor für Aktivitätszeiten
std::vector<ActivityPeriod> activityPeriods(ACTIVITY_PERIODS, ACTIVITY_PERIODS + NUM_ACTIVITY_PERIODS);

void setup() {
    // Berechnung der Gesamtzahl der LEDs
    for (const auto& stair : stairs) {
        totalLeds += stair.numLeds;
    }
    leds = new CRGB[totalLeds];

    // WiFi-Verbindung herstellen
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
    }

    // Zeitserver konfigurieren
    configTime(GMT_OFFSET_SEC, DAYLIGHT_OFFSET_SEC, NTP_SERVER);

    // FastLED initialisieren
    FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, totalLeds);

    // Sensor-Pins konfigurieren
    pinMode(BOTTOM_SENSOR_PIN, INPUT);
    pinMode(TOP_SENSOR_PIN, INPUT);
}

void loop() {
    if (isWithinActiveHours()) {
        if (digitalRead(BOTTOM_SENSOR_PIN) == HIGH) {
            lightStairsUpward();
        } else if (digitalRead(TOP_SENSOR_PIN) == HIGH) {
            lightStairsDownward();
        }
    } else {
        turnOffAllLEDs();
    }

    delay(1000);
}

bool isWithinActiveHours() {
    struct tm timeinfo;
    if(!getLocalTime(&timeinfo)){
        return false;
    }

    int currentMonth = timeinfo.tm_mon + 1;
    int currentDay = timeinfo.tm_mday;
    int currentHour = timeinfo.tm_hour;
    int currentMinute = timeinfo.tm_min;

    for (const auto& period : activityPeriods) {
        if (isDateTimeInPeriod(currentMonth, currentDay, currentHour, currentMinute, period)) {
            return true;
        }
    }
    return false;
}

bool isDateTimeInPeriod(int month, int day, int hour, int minute, const ActivityPeriod& period) {
    int currentTime = hour * 60 + minute;
    int startTime = period.startHour * 60 + period.startMinute;
    int endTime = period.endHour * 60 + period.endMinute;

    bool withinDateRange = false;
    if (period.startMonth < period.endMonth || 
       (period.startMonth == period.endMonth && period.startDay <= period.endDay)) {
        withinDateRange = (month > period.startMonth || (month == period.startMonth && day >= period.startDay)) &&
                          (month < period.endMonth || (month == period.endMonth && day <= period.endDay));
    } else {
        withinDateRange = (month > period.startMonth || (month == period.startMonth && day >= period.startDay)) ||
                          (month < period.endMonth || (month == period.endMonth && day <= period.endDay));
    }

    if (!withinDateRange) {
        return false;
    }

    bool withinTimeRange = false;
    if (startTime < endTime) {
        withinTimeRange = (currentTime >= startTime && currentTime < endTime);
    } else {
        withinTimeRange = (currentTime >= startTime || currentTime < endTime);
    }

    return withinTimeRange;
}

void turnOffAllLEDs() {
    for (int i = 0; i < totalLeds; i++) {
        leds[i] = CRGB::Black;
    }
    FastLED.show();
}

void lightStairsUpward() {
    int ledIndex = 0;
    for (const auto& stair : stairs) {
        CRGB color = CRGB(stair.red, stair.green, stair.blue);
        if (USE_RUNNING_LIGHT) {
            if (stair.reverseDirection) {
                for (int led = stair.numLeds - 1; led >= 0; led--) {
                    leds[ledIndex + led] = color;
                    leds[ledIndex + led].nscale8(stair.brightness);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            } else {
                for (int led = 0; led < stair.numLeds; led++) {
                    leds[ledIndex + led] = color;
                    leds[ledIndex + led].nscale8(stair.brightness);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            }
        } else {
            fill_solid(&leds[ledIndex], stair.numLeds, color);
            for (int led = 0; led < stair.numLeds; led++) {
                leds[ledIndex + led].nscale8(stair.brightness);
            }
            FastLED.show();
        }
        ledIndex += stair.numLeds;
        delay(STAIR_DELAY);
    }
    delay(LIGHT_DURATION * 1000);
    turnOffStairsUpward();
}

void lightStairsDownward() {
    int ledIndex = totalLeds;
    for (auto it = stairs.rbegin(); it != stairs.rend(); ++it) {
        ledIndex -= it->numLeds;
        CRGB color = CRGB(it->red, it->green, it->blue);
        if (USE_RUNNING_LIGHT) {
            if (it->reverseDirection) {
                for (int led = 0; led < it->numLeds; led++) {
                    leds[ledIndex + led] = color;
                    leds[ledIndex + led].nscale8(it->brightness);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            } else {
                for (int led = it->numLeds - 1; led >= 0; led--) {
                    leds[ledIndex + led] = color;
                    leds[ledIndex + led].nscale8(it->brightness);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            }
        } else {
            fill_solid(&leds[ledIndex], it->numLeds, color);
            for (int led = 0; led < it->numLeds; led++) {
                leds[ledIndex + led].nscale8(it->brightness);
            }
            FastLED.show();
        }
        delay(STAIR_DELAY);
    }
    delay(LIGHT_DURATION * 1000);
    turnOffStairsDownward();
}

void turnOffStairsUpward() {
    int ledIndex = 0;
    for (const auto& stair : stairs) {
        if (USE_RUNNING_LIGHT) {
            if (stair.reverseDirection) {
                for (int led = stair.numLeds - 1; led >= 0; led--) {
                    setStairLED(ledIndex + led, stair);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            } else {
                for (int led = 0; led < stair.numLeds; led++) {
                    setStairLED(ledIndex + led, stair);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            }
        } else {
            for (int led = 0; led < stair.numLeds; led++) {
                setStairLED(ledIndex + led, stair);
            }
            FastLED.show();
        }
        ledIndex += stair.numLeds;
        delay(STAIR_DELAY);
    }
}

void turnOffStairsDownward() {
    int ledIndex = totalLeds;
    for (auto it = stairs.rbegin(); it != stairs.rend(); ++it) {
        ledIndex -= it->numLeds;
        if (USE_RUNNING_LIGHT) {
            if (it->reverseDirection) {
                for (int led = 0; led < it->numLeds; led++) {
                    setStairLED(ledIndex + led, *it);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            } else {
                for (int led = it->numLeds - 1; led >= 0; led--) {
                    setStairLED(ledIndex + led, *it);
                    FastLED.show();
                    delay(RUNNING_LIGHT_SPEED);
                }
            }
        } else {
            for (int led = 0; led < it->numLeds; led++) {
                setStairLED(ledIndex + led, *it);
            }
            FastLED.show();
        }
        delay(STAIR_DELAY);
    }
}

void setStairLED(int ledIndex, const StairConfig& stair) {
    if (stair.keepGlowing) {
        leds[ledIndex] = CRGB(stair.glowRed, stair.glowGreen, stair.glowBlue);
        leds[ledIndex].nscale8(stair.glowBrightness);
    } else {
        leds[ledIndex] = CRGB::Black;
    }
}

Daten gehen über Widerstand dann an den LED streifen

Was genau heißt das ? Welchen Strom kann das liefern ?

100W
Wenn ich ein 5 Meter Band anschliesse leuchtet es komplett bei voller Helligkeit.
Ich habe jetzt mal ein Fehlerhaften Streifen ganz vorne ran gemacht, Problem bleibt.
Anderen streifen vorne angeschlossen und geht.
Auch wenn ich nur den einen Streifen anschließe.

Ok, das sollte reichen.
Leider habe keine weiteren Ideen dazu.

Kannst du bitte ein Foto vom Anfang und Ende von den funktionierenden und das gleiche von den nicht richtig funktionierenden Streifen machen.

Das ist schon grenzwertig dünn. Wo bekommt man in Deutschland eigentlich Drähte nach AWG Norm her? Bitte zeige doch mal Fotos.

Hier zählt er genau 56 LEDs nicht gelötet am Ende.

Sketch nichts verändert, sollten auch 56 LEDs leuchten, es leuchten aber 57 LEDs, die LED vorm gelöteten wird nicht gezählt, aber mit beleuchtet

Sketch mal auf 55 LEDs den ersten Streifen gestellt, es wird richtig gezählt, die letzte LED ist Blau,jetzt sollte vom nächsten Streifen aber die letzte LED wieder Weiß sein. Sie ist aber Blau, heißt vom ersten Streifen die letzte LED wird beleuchtet aber nicht mitgezählt

@wwerner
Aus der Industrie kommen die, Erdleiter ist ETFE AWG20 und Rot ist PFA Awg20
in 2 Wo kann ich dir die genauen Daten vom Kabel geben
Die sind um einiges Dicker als was da am LED Streifen dran ist