Timer et Logicator

Gapak

Senior Member
Bonjour, j'apprends a me servir de la fonction "timer" pour éviter d'utiliser "attendre". J'ai bien étudié la page 38 de A4 mais ne parviens pas a faire marcher en simulation le schéma simplifié suivant:
Appuyer sur BP1, la led1 s'allume et le timer est lancé, au bout de 5 secondes la led1 s’éteint, le timer s’arrête.
Rien de plus simple mais je bute lamentablement!
Pouvez vous me donner le flowsheet Logicator qui ferait ceci avec succès.
Merci
 

fuse

Senior Member
Bonjour Gapak,
Je constate que vous évoluez très rapidement sur les Picaxes...
Ceci étant, concernant votre soucis, j'ai souvent constaté un fonctionnement aléatoire (enfin cela ne fonctionne pas) du timer en mode simulation. Je vous conseille de tester le timer avec un module Picaxe réel.
 

PieM

Senior Member
Bonjour, j'apprends a me servir de la fonction "timer" pour éviter d'utiliser "attendre". J'ai bien étudié la page 38 de A4 mais ne parviens pas a faire marcher en simulation le schéma simplifié suivant:
Appuyer sur BP1, la led1 s'allume et le timer est lancé, au bout de 5 secondes la led1 s’éteint, le timer s’arrête.
Envoyez votre flowsheet...
Avez vous remis timer à 0 après extinction de la led ?

Un conseil aussi: évitez de faire des tests de temps avec une égalité.
Si pour une raison quelconque dans votre programme il y a un retard lié à une attente, votre égalité ne sera jamais vraie.
Donc plutôt que de tester Time = 5, testez Time > 4 .
 

Gapak

Senior Member
Voila, j’ai essayé mon flowsheet timer (voir PJ) sur un Picaxe 08M2. Quand j’appuie sur le bouton la LED s’allume mais ne s’éteint jamais. Je suis sur que je fais une erreur dans le diagramme. Merci d’inspecter ce que j’ai fait. Apres le post de PieM j’ai essaye time > 4, cette fois la LED ne s’allume pas dutout.Test de timer.jpg
 

fuse

Senior Member
Bonjour Gapak,
J'ai réécrit le programme suivant : il fonctionne en simulation (donc il ne faut pas tenir compte de la remarque en début de post...) :rolleyes:.

Test de timer.jpg

La commande
n'est pas obligatoire, elle permet juste de vérifier l'avancer de la variable Time (visualisée par A) sur le panneau des variables...
 
Last edited:

PieM

Senior Member
Voila, j’ai essayé mon flowsheet timer (voir PJ) sur un Picaxe 08M2. Quand j’appuie sur le bouton la LED s’allume mais ne s’éteint jamais. Je suis sur que je fais une erreur dans le diagramme. Merci d’inspecter ce que j’ai fait. Apres le post de PieM j’ai essaye time > 4, cette fois la LED ne s’allume pas dutout.View attachment 14734
Il y a un gros problème ! dès que BP est relaché, votre programme tourne en boucle sur le test du BP !

Je ne sais pas à quoi correspond l'instruction timer on et timer off de logicator... sorry.

Il faut impérativement mettre la variable time à 0 à un moment sinon le timer continue à compter ... jusqu'à 65535 et reboucle. (donc au bout de 18,2 h!)
Dautre part :
la led ne peut s'éteindre, dans votre flowsheet que si time =5 or ce n'est pas ce que vous voulez faire:

Les actions que vous souhaitez faire ne dépendent que d'une chose: l'état de time.
donc l'action sur le BP doit agir sur time

-vous appuyez sur le BP
-si oui vous mettez le timer à 0
sinon:
-vous testez si le temps de 5s est écoulé (time > 4)
-si oui vous éteignez la led
-sinon vous allumez la led
et vous revenez en amont du test du BP

Mais je laisse la place aux pros de logicator ... :)

Mon post s'est un peu croisé avec celui de Fuse ...
Effectivement cela doit fonctionner car on lance une boucle indépendante dès l'appui de BP. J'ai lu un peu rapidement... Mais cela supprime tout contrôle pendant la temporisation. On est obligé d'attendre la fin du programme.

Je pense donc que l'instruction lancer time ou arrêter time doit mettre la variable time à 0 ? Et que fait l'autre ? j'avoue que ce n'est pas bien clair. la variable time étant active dès le démarrage du programme.
 
Last edited:

Gapak

Senior Member
Cher Fuse, merci pour le diagramme que j’essaye aussitôt. En effet il marche très bien en simulation mais après chargement dans mon 08M2, la LED s’éteint des qu’on relâche le bouton ? J’ai bien le bouton sur la broche 6 avec une 10K au 0V et la LED sur la broche 5.
Autre chose : comment fait-on pour visualiser la variable time sur le panneau analogique ?
 

PieM

Senior Member
la LED s’éteint des qu’on relâche le bouton ?
A mon avis, si la variable time n'est pas remise à 0, c'est tout à fait normal, puisque au moment du relâchement du bouton, le test Time >4 vient de conduire vers l'extinction de la led.
Lors de l'appui sur le BP, la led n'est pas allumée mais doit clignoter très rapidement en fait.
Mais je n'utilise pas logicator...
 

fuse

Senior Member
bien vu PieM :D
Essai sur 28X2 (je ne dispose pas de 08M2)

Test de timer.jpg

Le programme fonctionne si la variable Time est remise à zéro (utiliser la commande expression dans Logicator).
Ceci étant, le mode simulation ne reproduit pas le phénomène.
Conclusion : il faut toujours tester un programme sur une maquette réelle.
Pour Gapak
Autre chose : comment fait-on pour visualiser la variable time sur le panneau analogique ?
Time n'est pas visible sur la panneau des variables, c'est pourquoi, je positionne l'expression A=Time dans le programme. (mais attention à la position de cette expression qui doit être dans une boucle dans lequel le programme reboucle....)
 

Gapak

Senior Member
Bravo et merci Fuse et PieM, maintenant tout marche parfaitement. Si je comprends bien l'expression"arrêter timer" ne remet pas a zéro, c'est comme un chronomètre que l'on arrête, il repart au même endroit si on n’appuie pas sur le bouton RAZ.
 

PieM

Senior Member
Bonsoir Fuse,
Je ne connais pas la fiabilité de la simulation sur logicator.
Concernant celle de PE, en Basic, je me méfie parfois, bien que je reconnaisse que la simulation, tâche complexe, est assez remarquable, et permet bien souvent de debugger des programmes.
 

fuse

Senior Member
Bonjour à tous,
La simulation (sous Logicator ou PE) est un outil formidable pour la mise au point des programmes...mais avec des limites, j'ai eu de nombreuses déconvenues avec le Timer ou les interruptions. Autre soucis : la vitesse de traitement d'un Picaxe réel est sans commune mesure avec la simulation ce qui provoque des fonctionnements étonnants (les rebouclages de test par exemple).
Je renouvelle donc ma remarque : il faut toujours tester le programme avec un système réel.
Pour Gapak, il est possible de connaitre la valeur de la variable Time sur une maquette réelle en utilisant un débug (il faut que la maquette réelle soit branchée sur le PC...)
Test de timer.jpg
 

Gapak

Senior Member
Pour continuer mon exploration des fonctions "timer", "attendre", "sommeil",pouvez vous me dire quelle est la différence entre les fonctions "attendre"et "sommeil"? la première est pour les pauses courtes, la deuxième les longues? Merci
 

fuse

Senior Member
Bonjour Gapak,
La fonction Attendre (Pause en Basic) permet de réaliser une attente. La valeur en milliseconde est assez précise.
La fonction Sommeil (Sleep en Basic) permet aussi de réaliser une attente mais cette attente positionne le Picaxe en mode faible consommation (pour les applications alimentés par des piles par exemple). Les compteurs internes du Picaxe sont arrêtés ce qui stoppent les modes PWMout ou Servo...
Le temps est un multiple de 2,3 sec et la précision est assez faible...
 

fuse

Senior Member
Bonjour Gapak,
La fonction Attendre (Pause en Basic) permet de réaliser une attente. La valeur en milliseconde est assez précise.
La fonction Sommeil (Sleep en Basic) permet aussi de réaliser une attente mais cette attente positionne le Picaxe en mode faible consommation (pour les applications alimentés par des piles par exemple). Les compteurs internes du Picaxe sont arrêtés ce qui stoppent les modes PWMout ou Servo...
Le temps est un multiple de 2,3 sec et la précision est assez faible...
 
Top