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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay
04.07.2018, 05:51
Beitrag #1
Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay
Zur automatischen Aktivierung/Scharfschaltung einer Alarmanlage benutze ich die im Codeausschnitt befindliche Abfrage, die auch funktioniert.

Um kurzzeitiges unnötiges Scharfschalten bei kurzfristigem Ausbuchen des Smartphones zu vermeiden hätte ich gern eine doppelte Abfrage, die z.B. nach 1-2 Minuten nochmals prüft ob sich das Smartphone im WLAN-Netz befindet und erst dann die Scharfschaltung erfolgt.

Wichtig, das Ganze muss ohne delay realisiert werden, da das Programm weiterlaufen muss.








Code:
if(Ping.ping(remote_ip)) {


   Serial.println("Smartphone ist im WLAN");
   digitalWrite(12, 1);
  
} else {
  
Serial.println("Smartphone ist nicht im WLAN");
    digitalWrite(12, 0);
    }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.07.2018, 09:34
Beitrag #2
RE: Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay
Ich kann Dir auch hier nur sagen, dass ich Deinen Ansatz für fehlerhaft halte.

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
05.07.2018, 07:02
Beitrag #3
RE: Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay
wenn du mit delays arbeitest dann stopst du denn microkontroller ich würde dir vorschlagen probiere es mit "millis();" .

Millis ist eine funktion vom arduino die jede milisekunde, seit dem start des Arduino, einen wert hochzählt also für uns eine möglichkeit die zeit zu bestimmen wann etwas ablaufen soll ohne den Arduino sagen zu müssen das er warten mit "delay(Zeit);" soll sondern mit so einem code
Code:
int PAUSE = 1000;
long lastActionTime= 0;

void setup(){}

void Funktion(){
  //Beginn der seriellen Kommunikation mit 9600 baud.

  //Speichern der Zeit in Millisekunden seit
  //dem Start / Reset des Arduinos.
  long currentMillis_forward = millis();
  //Wenn der Zeitstempel der letzten Ausführung kleiner als der aktuelle
  //Zeitstempel minus der Pause ist dann soll der Code ausgeführt werden.
  if(lastActionTime<(currentMillis-PAUSE) && Direction == 1){
    //Überschreiben des alten Zeitstempels mit dem neuen Wert.
    lastActionTime = currentMillis;

    //ausührbarer Code
    
  }
}

void loop (){Funktion();}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.07.2018, 20:53
Beitrag #4
RE: Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay
Hallo,
ich würde einen Timer-Interrupt benutzen. Es hängt vom Board ab, welche Lib geeignet ist.

Den Timer z.B. auf einen Interrupt je Sekunde einstellen, und dann in der Interrupt-Routine dann einen Zähler hochzählen, wenn das Smartphone nicht da ist, sonst Zähler auf null. Wenn der Zähler bei 120 ist, dann hat sich das Smartphone seit 120 Sekunden nicht gemeldet, das teilst Du dann dem Hauptprogramm über ein Flag mit.

So könntest Du auch das pingen rationalisieren. Es reicht ja, wenn Du z. B. alle 10 s ein Ping absetzt. Also hast Du in der Intterupt-Rouitine einen zweiten Zähler der immer bis 10 zählt.

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  GShield v5B / Arduino Due / Verwendung ohne G-Code bytecook 0 141 26.08.2018 11:33
Letzter Beitrag: bytecook
  Leds dimmen ohne delay jennerlein 9 1.004 20.04.2018 02:04
Letzter Beitrag: Corvus
  Struct mit Defaultdaten ohne initalisieren nutzen? da_user 14 1.012 22.03.2018 19:11
Letzter Beitrag: da_user
  Delay summiert sich auf Moe 7 821 26.02.2018 22:50
Letzter Beitrag: hotsystems
  Buzzer ohne Delay Harry 9 1.136 23.01.2018 12:30
Letzter Beitrag: Tommy56
  Problem mit Wire.available() abfrage avoid 1 576 11.01.2018 13:40
Letzter Beitrag: Tommy56
  Arduino Software ohne Bibliotheken-Manager bertl68 3 710 02.01.2018 18:36
Letzter Beitrag: Tommy56
  Arduino Software Serial - Delay notwendig? Zipfel1 18 2.059 02.01.2018 11:59
Letzter Beitrag: Tommy56
  While Schleife in einer If abfrage Thorsten_S 4 813 30.12.2017 16:37
Letzter Beitrag: Thorsten_S
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 1.063 22.08.2017 15:17
Letzter Beitrag: Tommy56

Gehe zu:


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