INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einfache IF-Abfrage....(mir) unerklärlicher Fehler
24.03.2019, 09:32 (Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2019 10:09 von Lite.)
Beitrag #9
RE: Einfache IF-Abfrage....(mir) unerklärlicher Fehler
Danke Tommy.
Gestern Abend ging nichts mehr, heute früh um 6:00 gings dann los.
Habe die while-Schleife erstmal dringelassen.

Die LED-Zeitsteuerung lief bereits.
Die Magnetventil-Zeitsteuerung läuft soweit, die "cases" werden abgearbeitet, allerdings passen die Zeiten nicht Huh

Case 1 soll erst nach 18s starten und startet nach ca. 0,15s.
Case 2 soll erst nach 6s starten und startet nach ca. 0,2s

Ich hab da nun wieder 3 Stunden "getestet"............

P.S.
Beim Berechnen von (aktMillis - lastMillis) am Anfang von Case1 liegt schon ein Wert von 4294967295 vor.
Klar geht es in Case 1 dann sofort weiter.
Bloß woher kommt dieser hohe Wert...kann ja eigentlich gar nicht sein?

P.S.S
Bei Case 2 dann exakt das gleiche Ergebnis.

Code:
void Func_Filterwechsel() {

  unsigned long lastMillis = 0;
  static byte LedStatus = LOW;
  unsigned long aktMillis = 0;
  static byte status = 0;  // 0 = Anfang, 1 = Membransp. aus, 2 = Stehw.-Sp. aus, 3 = fertig

  while (1)
  {

    aktMillis = millis();

//################################################################################​###########################

    //Taster-LED blinken lassen
    if (LedStatus == LOW) {
      if (millis() - lastMillis >= Blink_Interval) {
        digitalWrite(TasterLED, HIGH);
        lastMillis = millis();
        LedStatus = HIGH;
      } //Ende von if
    } //Ende von if LOW
    else {
      if (millis() - lastMillis >= Blink_Interval) {
        digitalWrite(TasterLED, LOW);
        LedStatus = LOW;
        lastMillis = millis();
      } //Ende von if
    } //Ende von else

//################################################################################​###########################

    //Membranspülung
    switch (status) {

      case 0: //Start der Membranspülung

        //Magnetventile schalten
        digitalWrite(Reinwasser, LOW);
        digitalWrite(MembranSpuelung, HIGH);
        digitalWrite(Rohwasser, HIGH);

        status = 1;

        lastMillis = aktMillis;

        break;


      case 1: //Umschalten von Membran auf Stehwasser (Zeit= 18s)
        if (aktMillis - lastMillis >= Filterwechsel_Membran) {

          digitalWrite(MembranSpuelung, LOW);
          digitalWrite(StehwasserSpuelung, HIGH);

          status = 2;

          lastMillis = aktMillis;

        }
        
        break;



      case 2: //Ende (Zeit= 6s bis Umschaltung)
        if (aktMillis - lastMillis >= Filterwechsel_Stehw) {
  
          digitalWrite(Rohwasser, LOW);
          digitalWrite(StehwasserSpuelung, LOW);

          status = 3;

          lastMillis = aktMillis;

        }  
        break;
    }
  }
}

Hab´s gefunden:

Die Zeitsteuerung der LED am Anfang hat durch die Verwendung von lastMillis hat das Ganze (logischerweise) durcheinandergeworfen.

Nun in Zeitsteuerung der LED eine andere Zeit-Variable benutzt und alles geht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.03.2019, 12:26
Beitrag #10
RE: Einfache IF-Abfrage....(mir) unerklärlicher Fehler
lastMillis sollte aber static oder global sein.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.03.2019, 12:36
Beitrag #11
RE: Einfache IF-Abfrage....(mir) unerklärlicher Fehler
Danke Tommy, ist auf static geändert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler bei delay über 32767 Kleingärtner 5 280 07.05.2020 18:51
Letzter Beitrag: Kleingärtner
  Fehler bei eigener Library Samu_wo 4 269 20.04.2020 15:51
Letzter Beitrag: Samu_wo
  Funk Fernbedienung Taster Abfrage kurz oder lange gedrückt Michi_exe 15 580 16.04.2020 17:19
Letzter Beitrag: Tommy56
  Fehler beim Kompilieren Lunge 6 364 09.04.2020 14:07
Letzter Beitrag: MicroBahner
  Undefined reference-Fehler beim Kompilieren MdE 9 519 24.03.2020 21:39
Letzter Beitrag: Tommy56
  Stepper Motor mit zwei Taster bedienen / Fehler ohne Fehlermeldung Milano 6 477 21.03.2020 16:06
Letzter Beitrag: MicroBahner
  Fehler bei Kompilieren ak68 6 764 21.03.2020 13:12
Letzter Beitrag: Tommy56
  Reihenfolge bei && Abfrage Harry 1 345 18.02.2020 19:14
Letzter Beitrag: Tommy56
  Arduino Taster - Welcher Fehler? lil.chem 4 534 10.02.2020 22:39
Letzter Beitrag: Franz54
  Compiler Fehler Meldung TKK-Arduino 40 2.169 09.02.2020 14:28
Letzter Beitrag: TKK-Arduino

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste