Salve ragazzi sono nuovo del mondo arduino volevo sapere se era possibile con arduino fargli eseguire due comandi in modo indipendente e codice utilizzare, mi spiego utilizzare due loop comandi indipendenti o per meglio dire creare una sorta di esecuzione di comandi in parallelo totalmente separati ovvero con il primo tipo faccio lampeggiare led e con il secondo faccio comandare dei relè senza che il lampeggio del led mi dia tempi di pausa per il comando del relè, è possibile farlo?
Si certo basta non inserire delay o funzioni che facciano fermare per un po il programma
umibozu83:
Salve ragazzi ...
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili
No. Non esiste un multitasking.
Devi scrivere lo sketch in modo che le cose che vuoi fare non si bloccino a vicenda. Percui niente delay() o altre funzioni che bloccano lo sketch
Ciao Uwe
Si scusate la barbaria della non presentazione e della superficialità, io di base sono elettronico con buona conoscenza essendo riparatore e assemblatore, arduino l'ho usato parecchio in sostituzione di plc e automazione sequenziale ma con molta elettronica di supporto, ora volevo eseguire un progettino che man man andrò ad upgradare su. Ho iniziato e stò usando Arduino uno e lo vorrei utilizzare per il mio progetto, volevo totalmente utilizzare arduino senza altri circuiti elettronici, in sostanza volevo creare un avvisatore vocale con lampeggio di luci come avvisatore visivo. il funzionamento a grandi linee è questo
- Invio comando
- inizio lampeggio luci continuativo
- inizio annuncio vocale
- pausa dell'annuncio vocale
- riperizione annuncio vocale
- pausa annuncio vocale
...
e così finchè il comando è ancora attivo.
L'annuncio vocale per adesso è affidanto ad un circuito eprom esterno comandabile da un impulso; Arduina invia l'impulso e quest'ultimo avvia la registrazione intera dopo di che ci sono una trentina di secondi di pausa per cui in linea teorica il comando delay dovrei utilizzarlo per dare la pausa agli impulsi da dare al circuito eprom, nel contempo il led deve continuare a lampeggiare senza essere influenzato dalle pause. Se cè qualche idea o soluzione interna ad arduino altrimenti mi devo affidare ad un circuito lampeggiante esterno.
Secondo me puoi fare con l'utilizzo di millis().
Qui puoi leggere un ottimo articolo sull'utilizzo di questa funzione.
http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/
mi sà hai visto giusto, da come leggo specie dall'esempio è proprio quello che stavo cercando. Grazie tantissimo, comincio a fare un prototipo e vi terrò aggiornati
salve a tutti ,
sto costruendo un robot e sto utilizzando vari motori dynamixel con arduino uno.
ho programmato tutto e quando il mio robot deve eseguire due ordini in parallelo non li fa.ho utilizzato sia delay che millis ma il risultato non cambia,che mi consigliate?saluti e grazie a tutti
Il parallelo, su Arduino, non esiste (e' una MCU, non un cluster di processori neurali :D) ... al massimo puoi avere comandi sequenziali molto veloci e funzioni "non bloccanti" che si susseguono (se non usi delay o altri comandi bloccanti tu)
Data la velocita' di elaborazione, sara' possibile eseguirli in modo che "sembrino" paralleli (ad esempio, far lampeggiare piu led a velocita' diverse e contemporaneamente eseguire altri comandi), ma l'esecuzione sara' sempre e comunque sequenziale ...
Etemenanki:
Il parallelo, su Arduino, non esiste
Esatto. Al massimo, sfruttando il concetto delle reti neurali, si possono mettere più MCU sul robottino in modo che ognuna gestisca un aspetto dell'automazione. Però poi diventa tutto più complesso dal punto di vista della coordinazione fra le stesse MCU.
ho programmato tutto e quando il mio robot deve eseguire due ordini in parallelo non li fa.ho utilizzato sia delay che millis ma il risultato non cambia,che mi consigliate?saluti e grazie a tutti
Che tipo di ordini? Come hai strutturato il codice? Se può servire, ti passo questa piccola guida che ho scritto:
http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/
a me servirebbe una cosa del tipo che il mio robot balla alzando le braccia e nel frattempo faccia un'altra cosa ,tipo ruoti il busto e abbassi la testa,insomma cosa del genere.
uso reti sequenziali molto veloci senza mettere delay?sennò come altro posso fare?
il mio codice l ho strutturato nel seguente modo:
inizializzo variabili,etc,etc,il mio robot comincia a ballare fin quando non rileva un ostacolo,in questo caso ti dice no con la testa e torna indietro e vorrei che scegliesse la strada dove andare sfruttando i sensori infrared(non saprei come fare questa cosa ma dovrebbe fare questo,accettasi suggerimenti),al finale ti fa un inchino.