multiprogramme avec un seul poussoir

fred62

New Member
Bonjour à tous

Je suis très novice en électronique ainsi qu'en programmation de picaxe, que je viens de découvrir, mais c'est un loisir que j'aime
j'aimerai savoir si il existe une commande qui permet avec un seul bouton poussoir de chercher plusieurs programme par appui successif sur ce bouton.
Je m'explique, si j’appuie une fois sur le poussoir je vais chercher le programme 1, si j’appuie 2 fois de suite je vais chercher le programme 2 et ainsi de suite. pour l'instant je fais mes début sur un 08M2 et un 20X2. si cette commande existe pourriez-vous me l'indiquer avec assez de précision voir même avec un exemple de programme
merci d'avance de vos réponse

cordialement
 

westaust55

Moderator
Bienvenue au forum de PICAXE.


Une manière possible de réaliser votre condition est:

Utilisez une presse de commutateur pour s'embrancher à une sous-routine d'interruption avec une commande de PULSIN de compter les presses suivantes de commutateur en dedans disent 2 secondes. 2 secondes permettraient potentiellement le choix de jusqu'à 4 ou 5 programmes.
Après que le seconde incrément de l'intervalle 2 par 1 à permettre pour la première presse de commutateur et sauf dedans une variable - par exemple, "count" où vous avez défini le compte par exemple comme
SYMBOL count= b5

Alors dans la boucle principale de programme vous pouvez employer a
ON count GOSUB label0, label1, label2, label3, label4, etc…

Le GOSUB te permettra d'effectuer une certaine tâche et à la fin d'un retour de cycle à la boucle principale et si le commutateur était de nouveau appuyé sur la valeur dans le compte est changé e
ON … GOSUB détournera alors à une sous-routine différente.

De cette façon vous n'avez pas besoin des essais pour le pressurage du commutateur dans chacun section de programme séparée (sous-routine).

Un morceau de PICAXE avec des goupilles d'interruption de matériel (Hint) sera encore meilleur comme la méthode votée d'interruption peut manquer une presse de commutateur si le programme est occupé à exécuter une commande de programme tandis que le commutateur est appuyé sur.
 

fred62

New Member
Bonsoir, westaust55 d'abord merci pour votre réponse rapide.
j'ai lu celle-ci et, je n'ai pas trop compris car je suis vraiment un novice débutant en programmation picaxe.
pourriez vous éventuellement faire un exemple du début de programme avec cette commande ce qui m'aiderai beaucoup
merci d'avance

amicalement
fred62
 

jihem

New Member
picaxe 08M2 avec une led sur pin1 et un bouton poussoir sur pin2, soit :

+V - BP - pin2 - R17K - 0v
pin1 - R500 - LED - 0v

programme :

#picaxe 08m2
main: if pin2=1 then
let b0=0
let b1=255
high 1
gosub interrupt
delay: pause 500
pause 500
if b0<>b1 then
b0=b1
goto delay
endif
setint off
low 1
serout 0,N2400,(#b1,CR,LF)
endif
goto main
interrupt:
low 1
push: if pin2=1 then push
high 1
inc b1
setint %00000100,%00000100
return

utilisation :
1 appui bref sur le BP allume la LED (passage en mode "commande")
chaque appui jusqu'à extinction de la LED est compté (dans b1)
après environ 1s sans action la LED s'éteint (retour au mode "normal") la valeur choisie est affichée (via liaison série)

Il est possible de limiter la valeur max de b1 en conditionnant l'incrémentation dans la routine d'interruption.
Il est important d'utiliser 2 pause 500 et non 1 seule pause 1000 car en retour d'interruption le pic passe à l'instruction suivante (ce qui peut zapper la tempo si l'interruption intervient dès le début de celle-ci)

L'orientation vers un programme ou un autre peut être effectué en lieu et place de l'envoi via série (avec on ... gosub/goto). Attention dans ce cas à fixer une valeur limite à b1 (lors du traitement d'interruption).
 

fred62

New Member
Bonjour, désolé pour le retard problème de connexion internet
merci à tous pour vos réponses rapide.
fred
 
Top