ciao a tutti
volevo sapere se c'era un modo
per mettere un delay (senza usare il delay) ad ogni volta che mando la stringa via seriale
tipo questo
Serial.println("xx");
Attesa
Serial1.println("xxx";
Altra attesa
grazie
Per non usare i delay si può usare un metodo tipo questo
Inizio
Data una variabile unsigned long
Dato un intervalli di tempo da attendere
Setup
variabile=millis();
Loop
if (millis()-variabile >intervallo)
{
Azioni
Variabile=millis()
}
Resto loop
volevo mettere le azioni in questo modo
serial.println("x");
attesa
serial.println("xx");
attesa
serial.println("xxx");
attesa
e cosi via
Domanda, il numero di caratteri aumenta ogni volta? Se si si può usare una seconda variabile, da inserire sempre nell'if di tempo passato. Si può pensare ad una variabile globale numero_x che parte da 1 e che, ad ogni ciclo dell'IF aumenta di uno. Nell'if, prima operazione é un for (byte i=0;i<numero_x;i++)
con per comando Serial.print ('x');
Fuori dal for un Serial.println ed un numero_x++
Fine if
Mi sembra pero' di capire, dalla domanda, che lui voglia un ritardo solo fra le diverse operazioni di stampa dei caratteri, tipo, far apparire i diversi caratteri con un certo ritardo sul display, e solo quello ...
Quindi, domanda: il ritardo ti serve solo a scopo "estetico" per far apparire i caratteri in modo graduale, ma NON e' funzionale al resto dello sketch, che deve quindi continuare a funzionare senza ritardi ? ... ad esempio, per far apparire una fila di x o altri caratteri che compaiono uno alla volta con quel ritardo, ma allo stesso tempo il ritardo in se non deve influire sul resto del programma ? ... se si, credo che la cosa piu semplice sia fare una funzione che stampa i caratteri, e che includa il controllo del ritardo fatto con millis all'interno della funzione, e poi condizionarla al valore di una flag ...
Cioe', l'intera funzione sara' un'if che viene eseguito solo se una certa variabile e', ad esempio, ad 1 (potrebbe anche essere solo un'if nel loop, se deve fare solo quello, ma una funzione da piu controllo, perche' puo essere richiamata solo dove serve), per cui quando vuoi che la stampa inizi metti la variabile ad 1 ...
il ritardo mi serve ogni volta che ho mandato una stringa alla seriale
non volevo usare il delay perchè mi fa confusione con altri tempi in attesa contati con la libreria timerone
volevo mettere una cosa come questa senza usare il delay
esempio
serial.println("stringa1");
attesa senza delay
serial.println("stringa2");
attesa senza delay
e cosi via
mikibenx:
non volevo usare il delay perchè mi fa confusione con altri tempi in attesa contati con la libreria timerone
... che cosa significa questa affermazione ? La delay NON può crearti particolari problemi, se non il fatto che ti blocca il programma in quel punto per tutti il tempo di delay().
Che "confusione" ti fa? E che significa "fa confusione" ? ? ? :o
Guglielmo
prova ad usare millis().
è un po difficile da comprendere ,ma risolve un sacco di problemi.
Puso:
prova ad usare millis().
è un po difficile da comprendere ,ma risolve un sacco di problemi.
... magari se aspettiamo la sua speigazione e capiamo COSA a lui serve, prima di "buttare li" soluzioni campate nel nulla, è meglio. Grazie.
Guglielmo
mikibenx:
...
esempio
serial.println("stringa1");
attesa senza delay
serial.println("stringa2");
attesa senza delay
e cosi via
Quello che non e' chiaro e' perche' dopo la stampa di una stringa ti serva una pausa che non blocca nient'altro ...
Oppure intendi dire che hai effettivamente diverse stringhe da stampare consecutivamente e vuoi il ritardo fra le varie stampe ? ... come ad esempio piu messaggi da una o due righe da far apparire in sequenza su un display dove tutte insieme non ci stanno ? ... oppure piu dati da far apparire in sequenza con un certo intervallo fra i vari dati, mentre il programma continua a fare altre cose ? (... tipo ad esempio quegli orologi che alternano ciclicamente ora, data e temperatura ? )
... Etem, ripeto anche a te ... invece di continuare a fare "supposizioni" perché non aspettiamo che mikibenx risponda e ci spieghi ? ... anche perché, causa della terminologia che ha usato, NON è affatto chiaro il problema e perché chiami in causa la libreria "timerone" ... :
Guglielmo
non so se mi spiegao meglio
volgio mandare una stringa via seriale aspettare e mandarne un'altra
posso farlo
cosi
serial.println("stringa uno");
delay(100);
Serial.println("Stringa due");
delay(100);
Serial.println("Stringa tre");
solo che non voglio usare il tempo di attesa frà le due stringhe delay
se io mando le stringhe senza il delay il computer non li legge bene
mentre se metto la pausa si