Bloccare processo in esecuzione da remoto

Ciao, ho un piccolo rover basato su tecnologia Arduino. Il rover è munito di un modulo bluetooth per la comunicazione remota e lo posso tranquillamente comandare implementando i metodi: avanti, indietro, sinistra e destra. Fin qui nessun problema. La difficoltà sorge nel momento in cui si voglia bloccare un processo in corso da remoto, ciò poichè Arduino, per quanto ho capito, non supporta la programmazione in parallelo.

Poniamo il caso in cui io implementi una funzione per far si che il rover viaggi per la stanza evitando gli oggetti con un sensore di prossimità, come posso fare a inviare il messaggio di stop in ogni momento a mia scelta? La ricezione del comando di stop è subordinato alla lettura della porta seriale, ma come faccio a tenere il rover in ascolto costantemente mentre esegue il programma?

Grazie.

come fai a leggere la posta anche quando non sei in casa?
semplice!, ogni tanto vai a guardare nella buca delle lettere e vedi se qualcuno ti ha scritto :slight_smile:
nel tuo caso puoi fare la stessa cosa, crei una variabile e di tanto in tanto (o ad ogni ciclo) vedi se contiene il comando, se si, lo esegue.

Questa soluzione la avevo già adottata programmando un robot Mindstorms comandandolo dal PC tramite un programma scritto in Visual C#. La mia speranza era trovare il modo di poter fermare il rover istantaneamente quando invio il comando, non solo in determinate condizioni, come ad esempio quando trova un oggetto e allora legge la porta seriale. :roll_eyes:

Metti nel ciclo loop() un controllo se il comando ricevuto é quello di stop che cancella il comando precedente.
Nello stesso modo come fai a leggere commandi quando vai avanti e potrebbe dover andare a destra o sinistra.
Ciao Uwe

Proverò in questo modo, adesso non ho modo di testare.
Vi farò sapere, grazie ad entrambi! :wink: