Ciao a tutti io sto costruendo un mio piccolo programmino alla quale dovrei far fare dei ragionamenti al Arduino in 5 secondi quindi apro un ciclo while con l'Arduino e dico mentre millis non e ancora arrivato ad esser > di 5000 millisecondi svolgi questa funzione, fino a qui tutto bene ma il mio problema e che dato che millis parte subito appena lancio il programma se io vado a verificare la mia funzione dopo 5 secondi non funziona niente perché sono già passati 5000 millisecondi. quindi come posso far in modo da tenere sempre aggiornato Arduino quindi fare una specie di start timer quando si presenta vera la funzione del ciclo if e dopo 5 secondi si disattivi.
Spero di esse stato abbastanza chiaro per qualsiasi dubbio chiedete pure buona serata a tutti vi posto il codice che ho messo giù fin ora ciao
if(prova == 1 )
{
digitalWrite(13, HIGH);
while (millis() < 50000)
{
threshold = analogRead(electret);
if (threshold > sensorMax) {
sensorMax = threshold;
}
grazie mille per le risposte io ho provato paolo a fare come mi hai detto te ma mi ritrovo con lo stesso problema perché funzionerebbe solamente appena si attiva il programma invece io vorrei che questa funzioni si effettuasse sempre anche oltrepassati i 5 secondi del avvio del millis(); come posso fare io dovrei dirgli praticamente che a ogni 5 secondi si deve verificare questa funzione ma purtroppo come fino ad ora la funzione si verifica solamente finché i millis non arrivano a 5000 poi per altre prove lui non funzionerebbe più.
Come detto da @paolo metti l'inizializzazione di timestart.
Poi timestart deve essere riletto ogni volta che son passati i famosi 5 secondi. Ma con un if, il while non serve.
prova così: