Mise en veille bloque sortie série

Bonjour,

Je débute en Arduino et j'ai déjà une question...

J'ai fait une boucle qui lit différents capteurs et dirige les données vers le PC.
A la fin de la boucle, je mets l'Arduino en veille avec la librairie LowPower.

Sur l'écran du PC , il me manque quasiment la dernière ligne du texte, alors qu'elle est bien affichée si je ne mets pas l'engin en veille.

J'ai augmenté la vitesse jusqu'à 115200 Bauds, mais rien n'y fait, il manque toujours un bout.

J'ai donc mis un delay(5) avant la mise en veille et là, tout va bien. Je suppose que l'Arduino se met en veille avant d'avoir pu tout envoyer sur le port série..

J'ai tenté de remplacer le delay par :

while(!Serial)
{}

Mais ça ne fonctionne pas...

Quelle solution élégante existe ? Quelle que soit la solution, je suppose que la consommation sera la même que delay ?

Merci

Quelle que soit la solution, je suppose que la consommation sera la même que delay ?

A peu près. Mais avec Serial.Flush() tu arrêteras juste au bon moment. Ni trop tôt, ni trop tard. Alors qu'avec un delay() tu ne sais pas quand le tampon d'émission sera vide et du coup tu dois surestimer le temps d'attente.

tahitibob35:
http://www.arduino.cc/en/Serial/Flush

+1

Merci ! :slight_smile:

Je testerai demain, n'ayant pas la bête sous la main !

En recherchant des infos à propos de flush(), j'ai trouvé ce post intéressant.

Puisque j'ai un auditoire attentif, j'en profite pour poser une autre question. A quoi sert la déclaration :
#ifdef AVR

Arduinoment,

Edit de Jean-François : Faire un autre sujet pour une autre question c'est mieux.... autrement c'est mal :grin:

D'accord moderator ! :slight_smile:

You know what ? :slight_smile:

Serial.flush() fonctionne ! C'était bien la solution.