Arduino NRF24L01+ Signal Prüfen

Hallo zusammen,

Ich habe ein kleines Programm geschrieben das mir verschiedene Signale vom Nano auf den Uno sendet. Meine Frage bezieht sich auf diesen Code abschnitt:

  if ( role == role_pong_back ) {    
    byte pipeNo, gotByte;                          // Declare variables for the pipe and the byte received
    while ( radio.available(&pipeNo)) {            // Read all available payloads
      radio.read( &gotByte, 1 );                  // Since this is a call-response. Respond directly with an ack payload.
      // Ack payloads are much more efficient than switching to transmit mode to respond to a call
      //radio.writeAckPayload(pipeNo, "2500", 1 ); // This can be commented out to send empty payloads.
      //printf("Empfangen: %d \n\r", gotByte);  //Eingehende Nachricht darstellen
      if (gotByte == 100) {
        printf("Anmelden\n\r");
        lcd.setCursor(0, 3);
        lcd.print("                    ");
      }
      else if (gotByte == 101) {
        printf("Aufwaerts\n\r");
        lcd.setCursor(0, 3);
        lcd.print("    Aufwaerts     ");
      }
      else if (gotByte == 102) {
        printf("Abwaerts\n\r");
        lcd.setCursor(0, 3);
        lcd.print("      Abwaerts      ");
      }
      else if (gotByte == 103) {
        printf("Schnell Aufwaerts\n\r");
        lcd.setCursor(0, 3);
        lcd.print(" Schnell Aufwaerts  ");
      }
      else if (gotByte == 104) {
        printf("Schnell Abwaerts\n\r");
        lcd.setCursor(0, 3);
        lcd.print("  Schnell Abwaerts  ");
      }
      else if (gotByte == 105) {
        printf("Funk 1 Angemeldet\n\r");
        lcd.setCursor(0, 3);
        lcd.print(" Funk 1 Angemeldet  ");
      } else {
        printf("Kein Befehl gefunden.\n\r");
        lcd.setCursor(0, 3);
        lcd.print("Kein Befehl gefunden");
      }
      
    }
}

Das ist eigentlich die Auswertung beim Empfänger. Funktioniert eigentlich auch Einwandfrei, sollange die verbindung nicht getrennt wird. Kann ich auf irgendeine Weise Kontrollieren ob alle 500ms ein Signal ankommt, wenn ja soll er die Bewegung anzeigen, wenn nein soll er einen "Fehler" ausgeben? Bsp. Kommt min. alle 500ms 100...100...100...100 soll er mir wie schon Programmiert die Anmeldung anzeigen. Wird dieses Signal jedoch verspätet Empfangen (oder gar nicht mehr) soll "Fehler" ausgegeben werden. Kann mir jemand helfen?

Du macht eine Variable namens unsigned long lastReceiveTime. Diese setzt du jedesmal wenn du Daten empfangen hast auf millis(). Dann kannst du mit if(millis() - lastReceiveTime > 500) testen ob deine Zeit vorbei ist.

Perfekt, Dankeschön :)

Hallo zusammen, das Thema ist zwar schon etwas älter aber leider habe ich auf Google nicht viel mehr gefunden. Könnte mir jemand das bitte nochmal etwas mehr erörtern? Danke vorab

Schau dir das BlinkWithoutDelay Beispiel in der IDE an