Hi, ich lerne gerade Programmieren und ich bin auf ein Problem gestoßen.
Ziel dieses Codes ist das, eine LED ähnlich einer Warnleuchte für Flugverkehr auf Hochhäusern etc. von voller Helligkeit langsam dunkler wird und wenn sie aus ist 1 Sek. aus bleibt und dann wieder von voller Helligkeit dunkler wird usw...
long timer1;
byte helligkeit;
void setup() {
helligkeit = 255;
timer1 = millis();
pinMode(10, OUTPUT);
}
void loop() {
if((millis() - timer1) >10)
/* wenn helligkeit null ist sollte "millis() - timer1" ca. 1 sek lang einen negativen Wert ausgeben
und ist somit kleiner als 10 und müsste also "false" ausgeben?!.
*/
{
analogWrite(10, helligkeit);
helligkeit--;
if (helligkeit == 0)
timer1 = (millis() + 1000);
else
timer1 = millis();
}
}
die 1 Sek Pause wenn Helligkeit ==0 wird einfach übersprungen,
Hauptproblem ist glaube ich die erste if-Anweisung. Diese gibt aus irgend einem Grund "true" aus und ich vermute es hängt mit der Negativen Zahl zusammen.
Oder ich habe einen Denkfehler ^^
würde mich sehr über eine Erklärung freuen warum der Sketch nicht wie gewollt funktioniert.
die delay() funktion will ich vermeiden um auch noch andere Aufgaben ausführen zu können.
die 1 Sek. Pause soll von der Variable helligkeit und nicht über einen Zeitintervall ausgelöst werden.
Vielen Dank Schonmal