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
Gruß Noah