skitarrata:
Ho risolto con dei cicli if, non so perché ma ha funzionato al posto del for, comunque prima di chiudere il post potete darmi un consiglio su come strutturare un programma con un accensione di un led e lo spegnimento per 4 volte con un tempo pari a 100ms è una volta con 5000ms? Ho provato con un for è con degli if ma la funzione millis mi fa problemi, lampeggia sempre sui 100ms
Il programma attuale non sarebbe strettamente necessario per rispondere alla seconda domanda (mentre lo è se ti interessa conoscere la risposta alla prima, il "non so perché ma funziona"). La risposta alla seconda domanda è: si, possiamo <3X(faccina che ride)>
Contento? No? allora rispondi a queste: quello che vuoi è un programma differente, che faccia solo i lampeggi, o una modifica al tuo programma attuale, che faccia anche i lampeggi? E mentre fa i lampeggi deve continuare ad agire normalmente? Queste risposte aiutano a scrivere il programma giusto.
Silente in pratica il programma tonemelody l'ho risolto con degli if con millis e ho scritto non so perché ma funziona, perché in pratica ho usato dei contatori invece del for, ma non trovo risposta da solo perché praticamente è la stessa cosa logicamente fare un for o un if con dei contatori, in ogni caso mi farebbe piacere senz'altro saperlo a parte questa questione, la seconda domanda che ho fatto potrebbe essere inclusa nel mio programma principale come effetto luce, quello che chiedevo era se tipo prendo il programma blink, lo trasformo con la funzione millis, se dopo 4 accensioni dei led ad un certo intervallo tipo 100ms e poi ne voglio 1 con 5000 come posso cambiare l'intervallo nel corso del programma in esecuzione ? Ho provato con il for ma non esce piu nonostante il conteggio, purtroppo non posso postare il programma perché non ce l'ho ma se è necessario lo rifaccio e ve lo faccio vedere, anche se quello che chiedevo era semplicemente come strutturarlo
Dipende, se mentre lampeggia non devo fare altro allora basta fare un timer millis lungo il tempo tra la fine di un ciclo e l'inizio del successivo. Nel corpo di quell'if si mette la for, che può anche usare delay, e dopo la for ma ancora nella if si ricarica il timer.
Se invece mentre lampeggia deve continuare a lavorare nulla di questo va bene, in quanto non é possibile usare cicli ripetuti (for o while) ma bisogna trasformare tutto in if. Poi, se serve vedremo come.
Io non prenderei il blink, perché credo che modificarli richiederebbe più lavoro che scriverne uno nuovo
Si, grazie Guglielmo. NON volevo dire che non si possa usare millis() con gli if (anzi é il modo più comune di usarla). Volevo dire che i cicli ripetuti, come i for o i while, bloccano il programma al loro interno fino a che non terminano. Per questo nofn é possibile utilizzarli per il caso in esame, per il quale vanno sostituiti con una logica che usi millis() E, degli if