Guarda che quello che ti ha scritto nid69ita fa esattamente quello che chiedi, solo che ha cambiato il posto dove viene fatto il test semplicemente per rendere l'impossibile, possibile!
E' un pelo meno performante perchè testa quale loop chiamare ad ogni giro, ma meno performante rispetto a qualcosa di impossibile, quindi non se ne lamenterà nessuno
Il codice funziona ma purtroppo non posso togliere
le funzioni di Blynk dal loop principale ne metterle altre
Avevo già fatto una cosa del genere ma si disconnetteva
Continuamente
Ho fatto un paio di domande sul forum di Blynk mi hanno confermato.....
Non conosco Blynk ma sarei curioso di capire meglio quello che dici, perchè mi sembra mooooolto strano.
Alla fine, il loop principale non è altro che una chiamata fatta da un loop infinito esterno, che non vediamo.
Il vero codice eseguito da arduino è qualcosa del genere, in pseudo codice:
setup();
while(true) {
loop();
}
Noi vediamo solo le due procedure setup() e loop() in cui possiamo metterci quello che vogliamo, perchè quello che le richiama è codice interno della libreria di base.
Ora, diciamo che vuoi richiamare la funzione x()
Fare:
void setup() {
while(true) {
x();
}
}
oppure
void loop() {
x();
}
è praticamente la stessa cosa.
x() non dovrebbe accorgersi minimamente della differenza.
Tu sostieni, invece, che mi sbaglio, e io vorrei capire perchè, se possibile.
Puoi darmi qualche dettaglio in più per farmi capire?
maubarzi:
Non conosco Blynk ma sarei curioso di capire meglio quello che dici, perchè mi sembra mooooolto strano.
Conosco poco Blynk perché ho sperimentato un poco qualche anno fa e poi mai più usato, ma il fatto qui è che l'OP dice di voler fare una cosa che non si capisce ("doppio loop"?), in un progetto che non ha descritto (non ha ancora detto cosa stia cercando di fare e nel primo post non ha parlato di Blynk), per realizzare qualcosa di diverso che non ha spiegato, e le uniche risposte attualmente possibili già le avete date, ma quando dice che non può togliere le procedure di Blynk né aggiungerne altre, mi pare che la cosa sia in totale contraddizione.
>makkio: più che altro l’IDE nasconde il main() che c’è ma non si vede (fa parte del “core” Arduino) e, in tale main() viene chiamata una volta la funzione setup() e, in un FOR infinito, viene chiamata la funzione loop().
Dato che il nome della funzione deve essere univoco, è chiaro che, per non avere errori, DEVE esistere una funzione di nome setup() ed una funzione di nome loop()
gpb01:
... certo, function overloading, ma ... l'utilià ? ? ? :o
Ecco, stavo per scriverlo anche io: ma PERCHE'? E poi il core..
Ripeto, l'OP dovrebbe dare un po' di spiegazioni in più, e chiarirci (e chiarirsi, forse...) quali siano i vincoli di Blynk, e perché diamine vorrebbe due loop().
Poi tutto il resto è noia.
Salve a tutti questo e quello che mi hanno risposto nel forum di Blynk.
As I said, I can see no relationship between the two pieces of code.
It’s not just the delays in the void loo, it’s everything else. Your void loop should be:
void loop()
{
timer.run();
Blynk.run();
}
If you have anything else in there then you’re doing something wrong.
Secondo me, nel loop, dopo Blynk.run(); puoi metterci quello che vuoi.
Devi però dichiarare i vari oggetti di Blynk nel setup e poi usarli con i valori aggiornati da quello che probabilmente
c'è dentro la Blynk.run();
maubarzi:
Devi però dichiarare i vari oggetti di Blynk nel setup e poi usarli con i valori aggiornati da quello che probabilmente c'è dentro la Blynk.run();
Non credo ci sia bisogno (se il progetto è in Blynk avrà i suoi include), ma tuttora non abbiamo capito (perché l'OP non lo ha spiegato) in pratica cosa voglia fare.
D'altronde nel link che hai messo tu c'è spiegato cosa altro si può fare, e sono progetti che usano proprio Blynk quindi quella risposta che "se nel loop c'è altro è sbagliato" è una cazzata.
maubarzi:
Secondo me, nel loop, dopo Blynk.run(); puoi metterci quello che vuoi.
Devi però dichiarare i vari oggetti di Blynk nel setup e poi usarli con i valori aggiornati da quello che probabilmente
c'è dentro la Blynk.run();
Tutto molto bello, ma ci spieghi perché parli di "due loop"? A volte non si deve partire dalla soluzione trovata (che non hai trovato, comunque) ma dal problema da risolvere: cosa stai cercando di fare?
docdoc:
Tutto molto bello, ma ci spieghi perché parli di "due loop"? A volte non si deve partire dalla soluzione trovata (che non hai trovato, comunque) ma dal problema da risolvere: cosa stai cercando di fare?
Buongiorno, sto cercando di fare due codici indipendenti cioè se all'accenzione tieni premuto un pulsante
il programma funziona senza bisogno di connessione ne cercherà di connettersi al server,
per quando riguarda il loop, facendo una chiamata a tempo impostata nel setup e non inserendo niente nel loop principale funziona ,ma si e presentato un'altro problema,che Blynk tenta di connettesi al server nel setup se viene inibito quando entra nel loop si blocca tutto.