J'ai voulu remplacer les delay par la fonction millis pour optimiser mon programme. Je me doute bien qu'il ne suffit pas de remplacer juste les delay par millis, mais même après quelque recherche je ne vois pas qu'est ce qu'il faut que je change.
titutato:
et voici ce que j'ai comme message d'érreur:
exit status 1
too many arguments to function 'long unsigned int millis()'
et le logiciel me montre mon dernier millis dans mon code.
J'ai vraiment du mal à bien comprendre le fonctionnement de la fonction millis. :confused:
Merci pour votre réponse.
Comme dit plus haut, millis() ne prend pas d'argument, c'est à dire que tu ne peux pas ecrire millis ( 250 );
La seule chose que tu peux ecrire c'est millis();.
Comment marche millis():
millis() est un compteur, qui compte le temps qui s’écoule depuis la mise sous tensions de ta carte.
A la mise en route millis() vaut 0, 10millisecondes plus tard millis() vaudra 10 etc etc...
Tu ne peux pas arrêter millis(), tu ne peux pas le remettre à zéro. Il se remet a zéro tout seul quand le compteur est plein, ce qui prend à peu près 50jours.
Quand tu veux faire cuire un oeuf 3 minutes, tu regardes ta montre, tu releves l'heure qu'il est, par exemple 12h05, puis tu regardes régulièrement ta montre jusqu'a ce que tu observes que 3 minutes ce sont écoulées.
Mais rien ne se passe. J'ai l'impression que mon programme ne rentre pas dans le premier if ( et aussi dans les autres ducoup ).
Je ne comprend pas pourquoi.
J'ai fais plusieurs test mais rien ne change. Je n'arrive pas a faire fonctionner mon programme.
Est ce que je pourrais avoir plus de précision sur comment je dois faire s'il vous plait? :-[
Maintenant mon programme rentre bien dans le if et fais se que je lui demande ( m'afficher l'état du bouton ). Mais la vitesse d'affichage est trop grande, alors que j'aimerais que l'état du bouton s'affiche toute les 750 millisecondes. Une idée?
J'avance un peu: maintenant tout mes "println" s'affiche, le "nope" le "stop it dude plz" et le "really? you still there?!" s'affiche a une vitesse normale. MAIS: je n'affiche plus l'état de mon bouton au niveau de mon premier "println" et l'animation de mes LED ne s'effectue pas (il y a seulement ma première LED qui s'allume, mais qui reste allumé).
C'est à dire que la temporisation de 750ms ne peut jamais être atteinte parce que tu réinitialises tempDepart toutes les 250 ou 500ms dans le reste de ton code.
L'enchaînement de tous tes if rends le code compliqué à lire et à comprendre. je pense qu'il serait judicieux d'écrire tout ça sous la forme d'une machine à états.
fdufnews:
L'enchaînement de tous tes if rends le code compliqué à lire et à comprendre. je pense qu'il serait judicieux d'écrire tout ça sous la forme d'une machine à états.
Moi je ne pense pas qu'il soit judicieux de réécrire sous forme de machine d'état, comme je l'ai dit dans un mail précédent je pense que c'est obligatoire.
Ca sert à quoi de bricoler avec millis() alors qu'actuellement il y a une boucle while ( compteur != 5 ) dans la loop?
fdufnews:
C'est à dire que la temporisation de 750ms ne peut jamais être atteinte parce que tu réinitialises tempDepart toutes les 250 ou 500ms dans le reste de ton code.
L'enchaînement de tous tes if rends le code compliqué à lire et à comprendre. je pense qu'il serait judicieux d'écrire tout ça sous la forme d'une machine à états.
d'accord je vais regarder ça, merci pour l'info.
kamill:
Ca sert à quoi de bricoler avec millis() alors qu'actuellement il y a une boucle while ( compteur != 5 ) dans la loop?
C'est pour remplacer les delay que j'avais mit avant, mais je me rend compte que faut pas forcément que je remplace TOUT mes delay, qu'est ce que vous en pensez?