Hilfe bei Failsafe für RC-Auto via OSC

Guten Tag,

momentan bin ich noch ganz am Anfang was dass Programmieren angeht.

Jetzt habe ich es zumindest geschafft ein RC-Auto via iPad über W-Lan und OSC zu Steuern.

Leider habe ich es aber noch nicht hinbekommen eine art Failsafe zu programmieren.
Auch im Internet konnte ich dazu kaum etwas finden.

Ich hatte mir es so vorgestellt das wenn die Verbindung verloren geht (z.B. der Stecker wird gezogen oder das W-Lan Signal ist unterbrochen) das dadurch eine Funktion ausgelöst wird die z.B. den Gas-Servo in die 90° Stellung bringt was beim ESC der Nullpunkt wär.

Oder das wenn ich z.b. 500ms kein OSC Signal sende, das dadurch wiederum eine Funktion wie oben abläuft.

Gesteuert wird das ganze vom iPad mit TouchOSC.

Ich verwende dass Arduino UNO mit dem Original Ethernet Shield.
Programmiert wurde in de IDE022 wegen der Ethernet Libary, warum weiß ich nicht habe teile des Codes abgeschrieben.

Da ich noch nicht so viele Kentnisse habe weis ich nicht was für Infos noch gebraucht werden.

Hoffe das ihr mir dabei Helfen könnt.

Vielen Dank schonmal.

#include <SPI.h>
#include <Ethernet.h> // version IDE 0022
#include <Z_OSC.h>
#include <Servo.h>


//Verbindungs Einstellung
byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xFE, 0xFE, 0xED };
byte myIp[]  = { 192, 168, 178, 199 };
int  serverPort  = 8000;
byte gateway[] = { 192, 168, 178, 1 };    // ROUTER
byte subnet[] = {255, 255, 255, 0 };    // SUBNET
  
//Server Einstellung
uint16_t i;
float floatValue;
Z_OSCServer server;
Z_OSCMessage *rcvMes;

//Servo für Gas/ESC
Servo Gas;
int valGas = 90;               //Start Position NULL Punkt
const int valGasStop = 90;     //SafetyStop

//Servo für Lenken
Servo Lenken;
int valLenken = 90;            //Start Position NULL Punkt



///////////////////////////////////////////////////////////////////////////////////////////
void setup(){ 
Ethernet.begin(myMac ,myIp); 
server.sockOpen(serverPort);


//Servos
Gas.attach(3);     //Servo an AnalogPin 3
Lenken.attach(5);  //Servo an AnalogPin 5
}


///////////////////////////////////////////////////////////////////////////////////////////
void loop(){
if(server.available()){
rcvMes=server.getMessage();
       
for(i=0 ; i<rcvMes->getArgsNum(); i++){
  switch( rcvMes->getTypeTag(i) ){
  case 'f':        
  floatValue = rcvMes->getFloat(i);
  String rclenken = "/rc/lenken";        
  if(rclenken==rcvMes->getZ_OSCAddress()){
      valLenken = floatValue;
      valLenken = map(valLenken, 0, 254, 0 , 179);
      Lenken.write(valLenken);
      }
         
  else {
  Gas.write(valGasStop);
   }
break;
}
}  

for(i=0 ; i<rcvMes->getArgsNum(); i++){
  switch( rcvMes->getTypeTag(i) ){
  case 'f':        
  floatValue = rcvMes->getFloat(i);
  String rcgas = "/rc/gas";
  if(rcgas==rcvMes->getZ_OSCAddress()){
      valGas = floatValue;
      valGas = map(valGas, 0, 254, 0 , 179);
      Gas.write(valGas);
      }
break;
}
}
}
}