fonction time et affichage sur LCD

electrique5

Senior Member
Bonjour
j'essaie d'affiché la variable TIME avec un picaxe 20M2 sur un écran LCD
j'ai fait ce code :

Code:
varA = TIME
bintoascii varA,b8,b9,b10
serout C.7,N2400_4,(254,128,b8,b9,b10,"             ")
ca fonctionne mais l'affichage est très lent c'est a dire il lui faut au moins 5 ou 6 secondes pour passé d'un chiffre a un autre.
je comprend pas d'où peut venir cette lenteur
Est-ce que le code que j'ai utilisé est bon ?
Autrement avez vous une solution
Merci
 

GM39

Senior Member
Ce traitement prend moins d'une seconde. On doit voir défiler les secondes en temps réel.
C'est le reste qui pose problème...
 

electrique5

Senior Member
quel reste qui pose problème parlez-vous ?
mon but justement c'est de voir les secondes défilé pour pouvoir faire mes fonctions après
mais la je sais pas pourquoi il met 5 secondes pour passer de 1 a 2 et 5 secondes plus tard de 2 a 3 etc...
 

MGU

Senior Member
Bonjour,

Y a pas tout là, il faudrait le code complet.
Time et serout ne s'aiment pas beaucoup

MM
 

electrique5

Senior Member
pour le moment si il y a que ca qui tourne en boucle
justement j'essaie de résoudre se problème de seconde de TIME sur afficheur LCD pour pouvoir avancé dans mon projet.
Le projet c'est de faire une tempo de 5 seconde en décroissant de 5 a 0 et a 0 c'est d'enclenché un relais.
 

GM39

Senior Member
par ex time bat à la seconde 4 et 16 MHz, à 8 MHz il bat toutes les 2s et je ne sais pas pour les autres valeurs

Ce serait bien d'avoir le programme complet
 

electrique5

Senior Member
je n'est pas encore fait le programme j'essaie d'abord de résoudre le problème de TIME afin qu'il m'affiche les secondes correctement
 

electrique5

Senior Member
Sans titre.PNG
dans la case LCD il y a juste le code :
Code:
varA = TIME
bintoascii varA,b8,b9,b10
serout C.7,N2400_4,(254,128,b8,b9,b10,"             ")
le serout envoie les données sur l'écran LCD et varA = b0
 

PieM

Senior Member
Pas clair !
Le programme que vous avez fait vient de logicator Non ?
Il ne peut pas boucler tel qu'il est car rien lui indique de le faire !
en outre ça ne sert à rien d'affecter Time à une autre variable, puisque c'est déjà une variable système.

lancez :
Code:
#picaxe 20M2
do
bintoascii Time,b8,b9,b10
serout C.7,N2400_4,(254,128,b8,b9,b10,"             ")
loop
 

BESQUEUT

Senior Member
mais la je sais pas pourquoi il met 5 secondes pour passer de 1 a 2 et 5 secondes plus tard de 2 a 3 etc...
Si vous observez ce comportement, ce n'est pas le programme qui est lent : si c'était le cas, vous observeriez un délai de 5 secondes pour passer de 1 à 6, puis un autre délai de 5 secondes pour passer de 6 à 11, etc...

En fait c'est TIME qui bat 4 à 5 fois trop lentement, comme si le PICAXE tournait à 1 Mhz.
Essayez avec une pause de l'ordre de 500 ms, voire plus, dans la boucle...
 

MGU

Senior Member
En fait, la commande serout retarde time (problème de timer probablement).
Il faut utiliser la commande serout une seule fois, au changement de seconde, sinon time prend du retard, parfois beaucoup de retard.
Le fait d'utiliser une pause de 500ms ne corrige que la moitié du problème.

MM
 
Last edited:

PieM

Senior Member
En outre, il est conseillé avec serout de n'envoyer qu'un byte à la fois, justement pour éviter de passer à coté d'un pulse interne d'incrémentation de time.
donc faire un serout b8 puis serout b9 etc ...
un serout N2400 de ("") demande 5 ms; un serout N2400 de ("AAA") demande 15 ms

la méthode consistant à attendre le changement de time pour faire un serout est bonne, mais n'empêche pas une erreur à long terme.
Une amélioration est possible avec hserout.
le mieux est d'utiliser un afficheur avec connexion // , beaucoup plus rapide et non bloquante.
 
Top