Led dimmen um Faktor x

Hi,
ich baue mir mit dem Arduino gerade einen “Led Controller” der sich über Lan bzw. durch den Router über WLan steuern lässt. Der Led-Controller mit Mosfets und Power-Input ist gelötet und funktioniert.
Ich kann die Farben auch über Lan setzen allerdings funktioniert das dimmen noch nicht so ganz wie ich will. Da ich eine sanfte Dimmung möchte versuche ich es mit einer for-Schleife. Allerdings wirft der mir dann alles durcheinander.
Hier der Code zum Dimmen:

void dimIt(float value) {
    if (dimmed == FALSE) {
        redDim = redInit;
        greenDim = greenInit;
        blueDim = blueInit;
        dimmed = true;
    }
    if (value < 1) {
        float dimQuotientR = redInit/100*value;
        float dimQuotientG = greenInit/100*value;
        float dimQuotientB = blueInit/100*value;
        if (value>=dim) {
            for (float i=dim; i<=value; i+=0.01) {
                analogWrite(RLed, redInit+dimQuotientR);
                analogWrite(GLed, greenInit+dimQuotientG);
                analogWrite(BLed, blueInit+dimQuotientB);
                delay(10);
            }
            dim = value;
        } else if(value<=dim) {
            for (float i = dim; i>=value; i-=0.01) {
                analogWrite(RLed, redDim-dimQuotientR);
                analogWrite(GLed, greenDim-dimQuotientG);
                analogWrite(BLed, blueDim-dimQuotientB);
                redDim = analogRead(RLed);
                greenDim = analogRead(GLed);
                blueDim = analogRead(BLed);
                delay(10);
            }
            dim = value;
        }
        
    } else if (value == 1) {
        
    }
}

die red/green/blue inits sind die Werte die durch einen Setter gesetzt werden.
Der dimQuotient soll den Faktor berechnen in dem die einzelnen Leads gedimmt werden, dass die Farbe des Strips erhalten bleibt.
“value” ist der Faktor von 0.00-1.00 den man eingeben kann.
Allerdings zieht der beim ersten Aufruf der dim-Methode alles Leds voll auf d.h. der Led-Streifen wird weis.
Ich probiere nun schon seit zwei Stunden an dieser einen Methode rum. Ich finde den Fehler einfach nicht, wahrscheinlich schon zu unkonzentriert mittlerweile.
Würde mich sehr freuen wenn mir da jemand helfen könnte.

Frohes Weihnachten schon mal :slight_smile:
Gruß Noah

Ich wüsste nicht, dass es Pins gibt, bei denen man analogWrite und analogRead machen könnte.
Das eine geht bei PWM - Pins, das andere bei Analog-Eingängen.

Evtl. hilft es, wenn du die 3 Zeilen

       redDim = analogRead(RLed);
       ...

einfach weglässt. Ist glaub ich nicht definiert, was bei analogRead(falscherPin) als Ergebnis geliefert wird.

Sonst kann man zu “Code” ohne Variablendefinition nicht viel sagen, ausser dass das wichtigste fehlt.

Würde mich aber freuen, wenn – evtl. nach Weihnachten – da noch was draus würde.