Hallo Leute....
ich sitze hier gerade an einem kleinen Teilprogramm, was mich etwas stutzig macht.
Ich möchte einfach mittels analogWrite() auf Knopfdruck eine LED hoch- oder runterdimmen. Dazu habe ich die Variablen helligkeit (Helligkeitswert für analogWrite())und beleuchtung (true-->LED soll leuchten).
Ich habe eine Methode geschrieben, die zur loop() hinzugefügt wird, und mittels millis() werden die Variablen gegebenenfalls geändert und die LED gesetzt.
Das Problem: befindet sich nach dem analogWrite() nichts weiter, dann setzt er die LED sofort auf HIGH oder LOW, also wird sie nicht gedimmt. Habe ich DEBUG definiert, und er gibt den Helligkeitswert danach auf der Konsole aus, dimmt er. Er dimmt auch, wenn ich nach dem analogWrite() ein kleines delay() setze.
Aber wie kommt dies zustande?
entsprechender Code:
void beleuchtungLoop(){
if(current_Milliseconds-beleuchtung_Milliseconds>=500){
if(beleuchtung && helligkeit<255){
helligkeit++;
analogWrite(beleuchtungsPin, helligkeit);
/*#ifdef DEBUG
Serial.print("neue Helligkeit: ");
Serial.println(helligkeit);
#endif*/
delay(5);
}else if(!beleuchtung && helligkeit>0){
helligkeit--;
analogWrite(beleuchtungsPin, helligkeit);
#ifdef DEBUG
Serial.print("neue Helligkeit: ");
Serial.println(helligkeit);
#endif
}
messung_Milliseconds=current_Milliseconds;
}
}