sarei tentato, a causa del brucio per vedere
Giuro ho letto circa 10 volte, ma non sono riuscito a trovare una parola plausibile da sostituirea a "brucio". ![:stuck_out_tongue: :stuck_out_tongue:](https://emoji.discourse-cdn.com/twitter/stuck_out_tongue.png?v=12)
e qui il consigio: una struttura di software tipo "parallelo", che ad es. calcoli ed elabori gradatamente a ogni ciclo di programma (spero di riuscire a spiegarmi) oppure una struttura tipo "sequenziale", dove le varie funzioni vengono eseguite una alla volta (con dei do-while, per es.)
mmmm... vedi, il fatto è che non sono le parole adatte, e io non trovo quelle giuste al momento. Vediamo, il microcontroller montato su arduino non è in grado di eseguire due compiti in modo paralello. Per cui l'unica è l'esecuzione sequenziale delle istruzioni. Anche quando usi AttachInterrupt per eseguire una tua funzione a seguito di un evento hardware, le istruzioni vengono processate sequenzialmente.
Io intuisco il problema che ti poni, tu dici: Come faccio a scandagliare una zona e contemporaneamente comandare un motore?
Per il momento concentrati sul problema pensando di avere solo un microntroller a disposizione, poi pensa se potessi chiedere ad un microcontroller "fai questo e avvisami quando hai terminato". Ciò è possibile dividendo i compiti in più di un microcontroller. Ma si deve creare un protocollo veloce di comunicazione.
C'è un modo di sviluppare sequenziale che viene chiamato "macchina a stati finiti" dove ad esempio prima di terminare uno stato/modo disabiliti quello attuale e abiliti quello che decidi tu. Lo stato seguente lo decidi prima di abbandonare lo stato attuale. Ovviamente lo stato attivo viene eseguito e tutti gli altri no, se serve eseguire un determinato stato lo devi abilitare da dentro lo stato attivo.
una cosa del tipo:
loop()
{
if (stato == 1)
{
fai delle cose qui, in base ad eventi o in pooling decidi che stato == 2 oppure 3, 4 ecc.
}
if (stato == 2)
{
codice ....
}
if (stato == 5)
{
codice ....
}
}
Nota però che così ha solo uno stato esclusivo, mentre se use altr variabili di stato es. statoLefMotor, puoi decidere di abilitare statoLeftMotor insieme a stato=5. Ma l'ordine di esecusione sarà sempre sequenziale.
Spero di non averti confuso le idee.
Ciao.