Salve, dovrei unire due sketch, in pratica ho una parte che si occupa di posizionare un motore stepper in un punto "zero". Una volta che il motore è in quella posizione, deve iniziare la seconda parte. Ho provato con while ed un if ma non funziona, o meglio, evidentemente non sono capace di realizzare la cosa.
Posto i tre codici.
saluti mimmocap
resetcarrello.ino (1.86 KB)
carrello.ino (6.84 KB)
copia_carrello.ino (8.34 KB)
non ho la libreria AccelStepper e non ho balle di cercarla adesso....
Dovrebbe venire na sorta del genere:
Non ho controllato se va o meno.
Sostanzialmente la fusione di piu sketch si fa cosi:
di tutti gli sketch la parte di declaration variabili va messa assieme
fondere assieme la setup
fondere assieme la loop
rimangono routine sugli altri sketc? le accodi alle routine nel file unito.
carrello.ino (8.17 KB)
Ti ringrazio per la risposta, ma forse mi sono spiegato male. In pratica io non devo "fondere" i due sketch ma, in pratica, il secondo sketch deve essere condizionato al primo. Cioè, all'accensione del Arduino devo avere la possibilità di posizionare a zero il motore ed interdire qualsiasi altra operazione perché, vuoi un black-out o spegnimento del controllore, il motore sicuramente sarà in una posizione qualsiasi. Quindi solo quando la condizione "motore in posizione zero" è soddisfatta deve partire il loop del secondo sketch.
arduino NON è un computer nel quale puoi decidere quale programma far partire ....
il secondo loop che ho fuso assieme al primo, lo metti all'interno di una routine e condizioni il fatto che venga eseguita
se prendi lo sketch di misura temperatura lo "fondi" assieme a quello li e vincoli la parte loop chiamandola quando ti serve...
come ad esempio se vuoi aggiungere la lettura delle SD o un sistema orologio..
prendi lo sketch, fondi assieme e vincoli sempre l'esecuzione della routine specifica... che corrisponde alla loop del secondo sketch + tutte le altre routines/funzioni esterne.
Il problema è che, purtroppo, sono portato a ragionare come dei ladder per plc perchè in quanto a programmazione Arduino non è certo il mio forte. Quando mi parli di creare una routine tipo:
"Se((([POS_ZERO]=1)eseguiloop2)restasuloop1)
Dove la inserisco? Come la inserisco ecc.ecc. Non conosco la sintassi.
Ti ringrazio comunque per l'aiuto.
Saluti Mimmocap
Grazie per i preziosi suggerimenti, studierò!
mimmocap:
Il problema è che, purtroppo, sono portato a ragionare come dei ladder per plc perchè in quanto a programmazione Arduino non è certo il mio forte. Quando mi parli di creare una routine tipo:
"Se((([POS_ZERO]=1)eseguiloop2)restasuloop1)
Dove la inserisco? Come la inserisco ecc.ecc. Non conosco la sintassi.
Ti ringrazio comunque per l'aiuto.
Saluti Mimmocap
allora non resta che quello che ha detto Guglielmo.
Su Arduino si programma in C++ ma se cerchi trovi anche un programma da caricare su arduino che trasforma arduino in un PLC con tanto di ladder ma penalizza la velocità.