A propos de Toggle

Jacques ROBERT

Senior Member
Bonsoir à tous,
Suite aux questions de Chimère 322 et à propos de Do...Loop,je suis allé voir le post de PieM,outre Do...Loop,vous traitez de TOGGLE et là j'ai une question:
puis-je écrire:
if w1 > 112 and w1 < 115 toggle B.0
en supposant que B.0 était a"1" passera-t-il à "0" et inversement? Si "oui" ça me simplifierait un programme en cours.
En dehors de ce sujet,mais non moins intéressant, votre projet de faire une traduction des instructions Basic serait un travail très important pour ceux d'entre vous qui
avez la capacité de le faire,au moins pour les instructions les + importantes,mais je crois fermement que vous feriez des heureux et de nouveaux adeptes pour PicAxe.
Alors,COURAGE les gars et un grand MERCI d'avance.
J.R.

















j
 

MGU

Senior Member
Bonjour,

Ben oui, toggle inverse la sortie, mais écrit comme ça, il y aura une erreur/
Essaie :

if w1 > 112 and w1 < 115 then
toggle B.0
endif

MM
 

Jacques ROBERT

Senior Member
Merci MGU,
Je voudrais vous envoyer mon programme qui est enrègistré dans"Mes Documents",mais je ne sais pas comment le joindre à ce message!
Car il y a un os qui serait trop long à décrire.A quoi sert le "endif" il me déplace la ligne en erreur suivant que je l'utilise ou pas?
 

MGU

Senior Member
Bonjour,

La structure du if conditionnel est la suivante:

Code:
If condition then
[INDENT][/INDENT]ligne 1
[INDENT][/INDENT]ligne 2
endif
Si la condition est vraie, les lignes 1 et 2 sont exécutées. Le endif ferme la commande.

On ne peut mettre directement après le then qu'une étiquette, un goto ou un gosub

Code:
debut:
if w1 > 112 and w1 < 115 then
	toggle B.0
	b0=12
endif

if w1 > 112 and w1 < 115 then debut

if w1 > 112 and w1 < 115 then gosub suite

suite:
	return
Pour introduire du code, il faut faire un copier/coller entre deux balises code.../code que trouve en mode avancé

MM
 

Jacques ROBERT

Senior Member
Code:
après [code] "mes documents",clic droit sur mon programme puis sur "copier",retour ici,clic droit puis clic sur "coller" et il ne se passe rien;je suis vraiment à la traine!
 

BESQUEUT

Senior Member
Code:
après [code] "mes documents",clic droit sur mon programme puis sur "copier",retour ici,clic droit puis clic sur "coller" et il ne se passe rien;je suis vraiment à la traine![/QUOTE]
Vous écrivez :
[CODE]
  Votre programme
  La suite du programme
  Patin
  Coufin
  Et J'en passe
  Et des meilleures
  End
[ /CODE]
Sans aucun espace entre [ et ]
 

MGU

Senior Member
Code:
après [code] "mes documents",clic droit sur mon programme puis sur "copier",retour ici,clic droit puis clic sur "coller" et il ne se passe rien;je suis vraiment à la traine![/QUOTE]

Bonjour,

Reprenons:
1- Dans PE, sélectionner tout le code par un glisser click gauche.
2- Click droit Copier
3- Venir sur le forum
4-mode "Avancé", cliquer sur l’icône #
5- Séparer les deux balises par un return
6-Click droit coller entre les balises
[ATTACH=CONFIG]14863.vB[/ATTACH]
 

PieM

Senior Member
Si sous Windows ...

1- Dans PE, sélectionner tout le code par un glisser click gauche. ............... ou bien faire Ctrl A
2- Click droit Copier ........................ou bien Ctrl C
3- Venir sur le forum
4-mode "Avancé", cliquer sur l’icône #
5- Séparer les deux balises par un return
6-Click droit coller entre les balises ................ ou Ctrl V
[/QUOTE]
 

Jacques ROBERT

Senior Member
Code:
'8*ON/OFF-PICAXE 14M2(2)
'Entrée:C.3-Sorties:B.0àB.5+C.0&C.1
init:low B.0,B.1,B.2,B.3,B.4,B.5,C.0,C.1
main:pulsin C.3,1,w1
pause 100
if w1 > 112 and w1 < 115 then
toggle B.0
pause 500
goto main
if w1 > 125 and w1 < 127 then
toggle B.1
pause 500
goto main
if w1 > 139 and w1 < 141 then
toggle B.2
pause 500
goto main
if w1 > 152 and w1 < 154 then
toggle B.3
pause 500
goto main
if w1 > 164 and w1 < 167 then
toggle B.4
pause 500
goto main
if w1 > 178 and w1 < 181 then
toggle B.5
pause 500
goto main
if w1 > 191 and w1 < 193 then
toggle C.0
pause 500
goto main
if w1 > 204 and w1 < 207 then
toggle C.1
pause 500
goto main
'fin de programme
voilà mon programme:consiste à mesurer la durée d'un créneau et modifier l'état de la sortie correspondante;si j'arrete au dernier"goto main"
on me signale une erreur à la ligne"if w1 >204 and... ;si je rajoute "endif"après le dernier "goto" on me dit:erreur sur la ligne"if w1 > 191 and.....C'est à partir de là que je
ne sais plus quoi faire!A L'AIDE!
 

BESQUEUT

Senior Member
Je vous suggère de consulter mon manuel au paragraphe 2.8 :
http://www.picaxeforum.co.uk/showthread.php?24539-Manuel-PICAXE-BASIC-pour-d%E9butants
Il y a des explications sur les structures à choix multiples.

Je vous conseille même de commencer les exercices à partir du paragraphe 2.6...
Il y a en effet dans votre programme un autre problème :
Toggle change l'état d'une LED, mais n'éteint pas les autres LEDs...
Au bout d'un moment, certaines seront éclairées, d'autre pas...
Et le Toggle ne fera qu'ajouter à la confusion...

Cordialement.
 
Last edited:

jojojo

Senior Member
C'est bien de faire "IF"

C'est bien de faire "THEN"

Ce serait mieux de penser a faire aussi "ENDIF", non ?

Hé hé ...:p
 

PieM

Senior Member
voilà mon programme:consiste à mesurer la durée d'un créneau et modifier l'état de la sortie correspondante;si j'arrete au dernier"goto main"
on me signale une erreur à la ligne"if w1 >204 and... ;si je rajoute "endif"après le dernier "goto" on me dit:erreur sur la ligne"if w1 > 191 and.....C'est à partir de là que je
ne sais plus quoi faire!A L'AIDE!
Bonjour,

Votre programme est l'exemple type d'utilisation de l'instruction Select Case Endselect, beaucoup plus lisible et concise!

Il deviendrait celui ci:

Code:
'8*ON/OFF-PICAXE 14M2(2)
'Entrée:C.3-Sorties:B.0àB.5+C.0&C.1
#picaxe 14M2   'initialise type de picaxe
init:low B.0,B.1,B.2,B.3,B.4,B.5,C.0,C.1

main:pulsin C.3,1,w1

select w1
case  113 to 114
	toggle B.0

case 126   
	toggle B.1

case  140
	toggle B.2
	
case 153 
	toggle B.3

case 165 to 166
	toggle B.4

case 179 to 180
	toggle B.5

endselect
pause 600
goto main
Une remarque : quand vous écrivez if w1 > 125 and w1 < 127 then ... cela veut dire que la condition n'est validée que si w1 = 126 !
Pause 500 étant commune à toutes les conditions, il faut la mettre en fin de test.
et la pause 100 étant systématique également, votre pause totale est de 600. !
 

Jacques ROBERT

Senior Member
Bonsoir,
Merci PieM pour votre programme,j'avais réussi à m'en sortir avec 35 lignes,mais avec le "Génial" procédé que vous m'avez donné,25 lignes ont suffit;j'ai tatonné un peu pour la pause et
300ms ont fait l'affaire.En fait il s'agit de commander 8 relais à partir d'une voie de la radiocommande,chaque relais indépendamment;4 inverseurs (on)off(on)sur l'émetteur permettent
de modifier la durée du créneau,une simple impulsion suffit pour changer l'état qui est donc "mémorisé" jusqu'à la prochaine impulsion.Et voilà ça marche!
Merci encore.
Congratulations .
 
Top