also in Anlehnung an das ButtonChangeState wollte ich bei Zustandsänderung einer LED eine Aktion hervorrufen, dazu habe ich unten stehenden Code. Aber irgendwie wir brennerState==0 nicht erreicht. Das ist nur mal die loop anweisung. Das script an sich ist vollständig und RTC Sachen etc. laufen auch. Aber hat jemand eine Idee, was daran Falsch ist?
void loop(void) // loop function runs over and over again
{
//Serial.println(analogRead(lightPin));
if(analogRead(lightPin) < 920)
{brennerState = 1;}
else{brennerState = 0;}
if((brennerState != lastBrennerState)){
//Ausgabe der Daten an den Server! Null zu Beginn
if(brennerState == 1){
digitalWrite(ledPin, HIGH);
start_duration = now.unixtime();
Serial.print("Brenner ist an ");
Serial.println(start_duration);
lastBrennerState = brennerState;
}
if(brennerState == 0){
digitalWrite(ledPin, LOW);
//Endzeitpuknt
end_duration = now.unixtime();
duration = end_duration - start_duration;
Serial.println("Brenner ist aus ");
Serial.print("Gelaufen für: ");
Serial.println(duration);
//Zurücksetzen der Counter
start_duration = 0;
end_duration = 0;
duration = 0;
}
}//End lastState
}
lastBrennerState = brennerState fehlt der Strichpunkt.
Es wäre nett daß Du sagst was nicht funktioniert und uns den Sketch so wie er ist gibst damit wir ihn kompilieren können.
Grüße Uwe
laserbrain:
Ach Mist, die Zeile ist schon drinnen. Die habe ich hier aus versehen mit den ganzen Kommentarzeilen rausgelöscht.
Aha.
Du hast jetzt aber auch nirgends eine Kontrolle drin, ob brennerState so gesetzt wird und wechselt wie Du es möchtest. Wie wäre es denn, zur Kontrolle den LED-Status gleich entsprechend zu setzen, so daß Du siehst, ob der Wechsel so stattfindet wie Du es möchtest:
Und das Setzen der LED aus dem Rest des Codes herausnehmen?
Damit Du dann per optischer Kontrolle der LED tatsächlich sicher sein kannst, dass brennerState so wechselt wie es sein soll?