positionnement avec un moteur pas à pas

dje8269

Senior Member
remplace le type de picaxe au début et essaye untruc du genre .Tu as confondu pas mal de truc je pense ! mais tu etais sur la bonne voie

Code:
#PICAXE 28X2 ' a la palce de 28X2 tu met ton type de picaxe

symbol touche = b1
Symbol Chiffre = b2

setfreq m16             'frequence 16MHz interne

pause 500

do	' ici on tourne en boucle
	
SerOut B.7, N2400_16,( 254, %00000001 ) 		' efface l'eran
serout B.7,N2400_16,(254,128,"touche=",#Chiffre)' On affiche le chiffre
pause 100
readadc a.0 , touche	' On lit la touche appuyee

select case b1
	
case > 170 : Chiffre = 10
case > 155 : Chiffre = 7
case > 145 : Chiffre = 4
case > 135 : Chiffre = 1
case > 125 : Chiffre = 11
case > 118 : Chiffre = 8
case > 111 : Chiffre = 5
case > 106 : Chiffre = 2
case > 99  : Chiffre = 12
case > 95  : Chiffre = 9
case > 90  : Chiffre = 6
case > 85  : Chiffre = 3

endselect

loop ' on retourne au debut
 

dje8269

Senior Member
MERCI! super c'est bon! ouf!
Pour le deblocage du picaxe , ou pour le programme ?

Je pense que le déblocage , c'est sur que ca fonctionne , mais pour le programme , ca m'étonne de moi s'il fonctionne du premier coup lol.

Dans ton programme il y avait quelques d'erreur .

Déjà on commence toujours par indiqué le type de picaxe

ensuite ton programme doit se trouver dans une boucle , sinon il s'exécute qu'une fois ! . donc déjà tu place un "do --- loop" dés le depart et tu met ton programme dedans.Comme ca plus de soucis

Tu as aussi confondu les infos à stocker .

Tu lis une valeur analogique suivant le bouton qui est pressé . tu la stocke .
Ensuite tu compare cette valeur du bouton , à une table . suivant la valeur tu affecte une autre variable pour stocker la réponse de la table .
et enfin tu affiche la réponse ;


oui ton programme marche bien sauf que l'affichage clignote fortement
enleve la pause 100 alors ! ou reduit la.

Je suis agréablement surpris qu'il fonctionne. ca fait plaisir
 

dje8269

Senior Member
Sur quel picaxe travailel tu ?

Que ce passe-t-il exactement ? la valeur n'est pas la bonne tout de suite ?

il faut trouver le bon compris entre clignotement et anti rebond . commence avec une pause de 10 avant le readadc .

les experts auront je n'en doute pas , de meilleur solutions ; on peut aussi faire du multi tache si c'est un M2
 

zeltron

Senior Member
c'est un 40x2 à 16 mhz
parfois suivant la frappe sur la touche il peut y avoir une erreur de lecture
et en pause 10 ça ne change rien il y toujours le même pb et l'afficheur clignote toujours
 

BESQUEUT

Senior Member
c'est un 40x2 à 16 mhz
Sauf erreur de ma part, il s'agit un 40x2 avec un quartz à 16 mhz (nuance), ce qui signifie que le Picaxe peut tourner à 64 mhz si on lui demande (ce qui ne me semble pas être le cas : setfreq m16 au lieu de setfreq em64)
Attention, ce type de modification entraine des changements dans pas mal de commandes, donc il faut être clair sur ce point dès le départ.
 

dje8269

Senior Member
Je suis pas assez calé , attendons un expert . Tu as deja ce site incontournable pour quelqu'un qui travaille avec des picaxes . Peut etre que tu y trouveras des exemples .

Je pense qu'il sera difficile de faire un vrai anti rebond , car il s'agirait de le faire sur la partie qui gère les touches et non pas celle qui les interpretent ; On fait en général un anti rebond sur le bouton .

qu'est ce qui détermine les valeurs des touches ? a quoi ressemble ton clavier ?
 

dje8269

Senior Member
Oui mais un condo anti rebond doit etre au plus de bouton poussoir pas du µc ! de plus 4.7nF c'est trés faible , tu n'as pas plus gros , genre 100nF ?, mais ca va retarder d'autant plus la MAJ de la valeur je pense .

c'est sur ton clavier q'uil faut le mettre et sur chaque BP . ou alors on soft VIA le logiciel qui gere ton clavier , si µC il y as bien sur ! une photo ou reference du dit clavier ?
 

dje8269

Senior Member
j'ai placé un 100nf sur le clavier ça ne change rien
Sur le clavier ou sur le BP ? il faut qu'il soit au plus proche du contact sec .

c'est un clavier classique à 7 sorties genre ça
Mais a quoi est il relié ce clavier ? Je ne connais pas son fonctionnement ; mais je doute qu'il fournisse une tension analogique ? pourquoi lire une tension analogique ?? est tu sur de ton montage et ou programme ? ca me parait bizarre de détecter une touche sur une tension analogique !
il y n'y a plus de clignotement et moins de rebond mais évidemment les chiffres se superposent...
Je ne sais pas quel afficheur tu utilise , mais je me souvient d'une ruse que j'avais fait . il s'agit d'écrire un espace a la place d'un chiffre ainsi pas besoin de tout effacer et fini le clignotement.
 

PieM

Senior Member
Un condo sur entrée analogique ne sert à rien dans ce cas. On en met si on a un problème d'impédance trop élevée sur le circuit d'entrée.
En tout état de cause il ne peut que retarder l'apparition de la bonne valeur sur l'entrée ana.
Je ne comprends pas quel problème de rebond il peut y avoir sur une entrée ana ?!
Par contre:
- merci d'indiquer quel est le schéma matriciel utilisé et le réseau de résistances pour la liaison de ce clavier.
- et surtout indiquer les valeurs lues au multimètre en fonction de la touche appuyée.

pour l'affichage, mettre : serout B.7,N2400_16,(254,128,"touche=",#Chiffre," ")
l'actualisation d'une valeur à l'affichage ne doit jamais être précédée d'une commande d'effacement

En principe le mieux est d'initialiser hors boucle avec un effacement
puis afficher la partie fixe : serout B.7,N2400_16,(254,128,"touche=")

ensuite dans la boucle on n'actualise que la valeur mesurée en la mettant à la bonne place:
serout B.7,N2400_16,(254,135,#Chiffre," ")

le " " final permet d'effacer le dernier chiffre quand on passe à nombre <10
 

zeltron

Senior Member
le schéma utilisé pour le câblage est celui ci

même valeurs de résistances

les tensions:
bp1=2.790v , bp2=2.164, bp3=1.793
bp4=2.977 , bp5=2.276, bp6=1.869
bp7=3.204 , bp8=2.406, bp9=1.955
bp10=3.420 , bp11=2.525, bp12=2.034

alors pour l'instant je n'ai pas encore modifié le programme pour mesurer ces valeurs
mais pour l'histoire du rebond, pendant ce test je me suis rendu compte que si par exemple
j'appuie en permanence sur le bouton 3 j'ai bien correctement sur le display le n° 3 mais de tant en tant le chiffre n°6 apparait
et pourtant la tension pendant ce moment reste parfaitement stable!!! à 1.793v!!!
la résistance de 15ko doit peut être poser pb... car les erreurs semblent être plus fréquente sur cette colonne ...
j'avais fait l'éssais de modifier les valeurs de la table mais je n'ai peut être pas fait ça dans les rêgles de l'art...
 
Last edited:

dje8269

Senior Member
Trop pechu pour moi ca .

Effectivement entre 3 et 6 , la différence de tension est trés faible . 0.076V .
la précision du readadc est de 0.019V avec une tension de 5 V en alimentant . Peut etre qu'il faudrait utiliser readadc10 qui est plus précis ? ou alors changer les valeurs des résistances pour essayer d'éloigner les valeurs les unes des autres !

Laissons un expert mieux te guider .
 

PieM

Senior Member
Tiens ce schéma me rappelle quelque chose !

vu les tensions, les valeurs de seuil ne sont pas bonnes: utiliser celles ci...
Code:
[color=Blue]select [/color][color=Purple]b0[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]169 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]10[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]157 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]7[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]147 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]4[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]135 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]1[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]125 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]11[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]119 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]8[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]113 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]5[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]107 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]2[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]101 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]12[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]97 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]9[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]93 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]6[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]85 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]3[/color]

[color=Blue]endselect[/color]
 

MGU

Senior Member
Enfin, bon, prendre un clavier matricé pour l'utiliser en One Wire, c'est chercher la difficulté, c'est beaucoup plus simple avec un clavier non matricé, on peut étager la tension alim plus facilement.

MM
 

zeltron

Senior Member
ok merci je vais tester ça
oui effectivement c'est votre schema comme j'ai dit en #159
mon clavier de fond de tiroir était parfait pour ce schema donc voila l'explication du choix et de cet essais...
 

BESQUEUT

Senior Member
ou alors changer les valeurs des résistances pour essayer d'éloigner les valeurs les unes des autres !
Ca devrait aller mieux avec les seuils proposés par PieM.
Mais (sans avoir fait les calculs) ce réseau de résistances ne me semble pas optimal pour "étaler" les seuils.
Voici deux exemples pêchés sur Internet si nécessaire.
1pin+keymatrix.jpgadc-matrix.jpg
Je complète suite à une petite insomnie :
Le schéma de droite est à oublier, (ou alors je n'ai rien compris ?)
Le schéma de gauche est effectivement meilleur que le schéma en cours :
- les tensions vont de 0V à 2,35V au lieu d'une différence de 1,63V
- le plus petit delta est de 0,122V au lieu de 0,071V théoriques
- (accessoirement, l'utilisation de résistances identiques peut simplifier l'approvisionnement)

L'exercicie est amusant. Nul doute que je tenterai de faire mieux un de ces jours...

Par ailleurs, j'ai recalculé les seuils proposés par PieM à partir des tensions mesurées. (Il y a un écart systématique entre les tensions théoriques et les tensions mesurées, mais ça ne change rien au programme) et je trouve la même chose :
170,158,148,136,126,120,114,107,102,98,94
Mais c'est une mauvaise méthode car on cumule les erreurs liées au calibrage du voltmètre et celles dues au Picaxe. Il serait bien préférable de lire bêtement les valeurs retournées par le readADC pour chaque appui sur un poussoir, puis de choisir les valeurs de seuil à mi-chemin entre chaque.
 
Last edited:

PieM

Senior Member
Le schéma de gauche est effectivement meilleur que le schéma en cours :
- les tensions vont de 0V à 2,35V au lieu d'une différence de 1,63V
Tout à fait. je trouve même pour 5V une variation de 0 à 2.73V soit en points:

139 135 130 125
120 114 107 99
92 83 73 62
51 36 20 0

(accessoirement, l'utilisation de résistances identiques peut simplifier l'approvisionnement)
Avec ce schéma on ne peut avoir des résistances identiques. la sommes des R des lignes / colonnes devant toujours être différente.
En pratique il faut que la R de ligne (ou colonne) soit supérieure à la somme des R de colonne (ou de ligne)
Ce qui est le cas ici avec 1500 > 3*390
 

zeltron

Senior Member
ce matin j'ai modifié le programme test comme vous me conseillez à savoir
Code:
[color=Navy]#PICAXE [/color][color=Black]40X2 [/color][color=Green]' [/color]

[color=Blue]symbol [/color][color=Black]touche [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]Symbol [/color][color=Black]Chiffre [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]

[color=Blue]setfreq m16             [/color][color=Green]'frequence 16MHz interne[/color]

[color=Blue]pause [/color][color=Navy]500[/color]
[color=Blue]SerOut B.7[/color][color=Black], [/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]( [/color][color=Navy]254[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Blue])         [/color][color=Green]' efface l'eran[/color]

[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Red]"touche="[/color][color=Blue])
do
      
readadc a.0 [/color][color=Black], touche    [/color][color=Green]' [/color]
[color=Blue]select case [/color][color=Purple]b1
      [/color][color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]135[/color][color=Black],#Chiffre,[/color][color=Red]" "[/color][color=Blue])
case [/color][color=DarkCyan]> [/color][color=Navy]169 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]10[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]157 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]7[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]147 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]4[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]135 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]1[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]125 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]11[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]119 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]8[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]113 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]5[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]107 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]2[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]101 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]12[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]97 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]9[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]93 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]6[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]85 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]3[/color]

[color=Blue]endselect
loop[/color]
les essais ne sont pas parfait à savoir, si je reste appuyé sur les touches y'a pas de pb j'ai les bonnes valeurs
mais si je relache la touches parfois une mauvaise valeur s'affiche
j'ai ôté le 100nf ça ne change rien
avant de modifier les valeurs de résistance comme votre dernier schema
j'aimerais être certain que ce n'est pas encore à cause du programme que j'aurais mal agencé...
donc ce programme de test est t'il correcte?
 

PieM

Senior Member
mettre le serout B.7,N2400_16,(254,135,#Chiffre," ") après le endselect (plus logique !), suivi d'une pause de 100ms.
 

zeltron

Senior Member
ok j'ai mis à jour le programme c'est un peu mieux mais pas parfait alors
j'ai modifié le câblage et les resistances avec les nouvelles valeurs à savoir 1.5ko et 390 o
et maintenant je me retrouve avec ces tensions

bp1=2.666v bp2=2.569v bp3=2.466v
bp4=2.245v bp5=2.111v bp6=1.966v
bp7=1.645v bp8=1.444v bp9=1.222v
bp10=0.722v bp11=0.395v bp12=0.025v
qu'elle serait la meilleure table à rentrer?
 

dje8269

Senior Member
Bonsoir zeltron,

Je suis de l'avis de BESQUEUT , a savoir de prendre les valerurs lues par le readadc directement plutot qu'au multimetre . ainsi on saura exactement la valeur qui lis le picaxe .

Mais c'est une mauvaise méthode car on cumule les erreurs liées au calibrage du voltmètre et celles dues au Picaxe. Il serait bien préférable de lire bêtement les valeurs retournées par le readADC pour chaque appui sur un poussoir, puis de choisir les valeurs de seuil à mi-chemin entre chaque.
Ainsi tu pourras faire ton tableau avec les seuils au point milieu .

donc il faut que tu note valeur readadc lue par le picaxe .

Je te donne un exemple . quand tu appui sur le BP1 ; la tension lue au multimetre est de 2.666V . le picaxe en "théorie" devra te donner une valeur de 140 environ +-2 . disons 140 . maitentant tu fais la même chose avec le BP 2 tu lis la valeur par exemple 135 . il faudrait faire ton seuil a 137 ou 138 environ ;

je sais pas si j'ai été clair
 

PieM

Senior Member
la tension lue au multimetre est de 2.666V . le picaxe en "théorie" devra te donner une valeur de 140 environ +-2
revoir la "théorie !

@zeltron
Comme il a y 3 colonnes, il aurait été préférable de monter des R470 plutôt que des R390, mais en fait ça ne change pas beaucoup les valeurs de seuil qui sont assez larges:
prendre
133 129 120 11 104 92 79 68 49 28 10 et <10

Attention qu'avec ce schéma, la valeur lue sera 255 si pas d'appui (alors qu'avec l'autre c'était 0).
il faut soit inverser le sens des tests : commencer par <10, <28 <49 ... < 133 < 140
ou bien débuter par un > 140 sans aucune action, puisque c'est que les touches sont relâchées. (valeur 255) et ensuite >133 >129 ...
 

zeltron

Senior Member
si tu as été tres claire, merci, j'ai bien compris maintenant
j'ai fais comme tu as dit
mais justement ça montre que ça ne va pas être si facile exemple bp8 et bp9
car voila les valeurs que je récupere suivant les façons d'appuyer plus ou moins vite sur les touches...
alors que le voltmetre est parfaitement stable...
bp1=135-136, bp2= 130-132, bp3=124-129
bp4=113-117, bp5= 107-108, bp6=100-104
bp7=83-84, bp8= 73-75, bp9=62-80
bp10=37-39, bp11= 20-28, bp12=2-5
 

PieM

Senior Member
nos messages se sont telescopé ;) je vais passer alors à r470 car les valeurs ci dessus montre des pbs
Pas la peine d'insister si ce clavier donne de telles valeurs ! Il y a un gros problème! si les valeurs lues au multi sont stables, (lues à quel endroit ?) il n'y a aucune raison pour avoir de telles variations de la lecture analogique !
revoir le câblage ... et le clavier ! quelles résistances de contact ?
 

dje8269

Senior Member
la tension lue au multimetre est de 2.666V . le picaxe en "théorie" devra te donner une valeur de 140 environ +-2
revoir la "théorie !
Une explication ? car pour moi . un picaxe alimenté en 5V à des paliers de 0.019V ( 5 / 255) donc a 2.666V cela fais 140 non ? C'est juste pour comprendre mon erreur
 

PieM

Senior Member
Une explication ? car pour moi . un picaxe alimenté en 5V à des paliers de 0.019V ( 5 / 255) donc a 2.666V cela fais 140 non ? C'est juste pour comprendre mon erreur
et pour moi, 2.666 * 255 /5 = 135.9
et si c'est en plus 140 +/- 2 , il y a un gros problème!
 

zeltron

Senior Member
les valeurs du voltmetre sont prises sur l'entré du microcontroleur
certe c'est un clavier de recup, mais il n'a fonctionné que pour un proto pas tres longtemps
mais je suis vache, j'appuie plusieurs fois rapidement etc... pour mettre en évidence les variations
avec r470 y'a plus de chevauchement.
voici les valeurs
bp1=2.703v val 137-138, bp2= 2.589 val 131-135, bp3=2.465 val 125-127
bp4=2.298v val 116-117, bp5= 2.139 val 108-109, bp6=1.966 val 99-101
bp7=1.723v val 87-89, bp8= 1.488 val 75-76, bp9=1.221 val 61-64
bp10=0.849v val 43-45, bp11= 0.468 val 23-26, bp12=0.020 val 1-5
 

PieM

Senior Member
les valeurs du voltmetre sont prises sur l'entré du microcontroleur
certe c'est un clavier de recup, mais il n'a fonctionné que pour un proto pas tres longtemps
un multimètre ne permet de voir des variations rapides de le tension.
Un clavier de qualité médiocre, est médiocre même à l'état neuf !

donc prendre comme seuil la moyenne de valeur mini et valeur maxi de deux BP successifs :

ex: BP8 et BP9 : (64+75) /2 > 70
 

amatpicax59

New Member
Pour ceux qui veulent calculer les tensions en fonctions des résistances de ligne et de colonnes
(1500 et 390 ohms dans las cas précédents) et de la résistance au + 5V (4700 ohms dans le cas précédent)
voici un programme en basic (Qbasic) qui vous donnera les résultats pour chaque touche du clavier 4x4
programme basic clavier 4x4.JPG
clavier 4x4 - résultat.JPG
 

zeltron

Senior Member
bon cette solution ne marche pas si mal
je vais la conserver et changer le clavier un jour d'une eventuel commande de composant...
j'ai adapté la pause avec des essais pour fiabiliser les frappes voici le programme de test définitif
Code:
[color=Navy]#PICAXE [/color][color=Black]40X2 [/color][color=Green]' a la palce de 28X2 tu met ton type de picaxe[/color]

[color=Blue]symbol [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]Symbol [/color][color=Purple]Chiffre [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]

[color=Blue]setfreq m16             [/color][color=Green]'frequence 16MHz interne[/color]

[color=Blue]pause [/color][color=Navy]500[/color]
[color=Blue]SerOut B.7[/color][color=Black], [/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]( [/color][color=Navy]254[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Blue])         [/color][color=Green]' efface l'eran[/color]

[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Red]"touche="[/color][color=Blue])
do
      
readadc a.0 [/color][color=Black], [/color][color=Purple]touche    [/color][color=Green]' On lit la touche appuyee[/color]
[color=Blue]select case [/color][color=Purple]b1[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]6 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]12[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]30 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]11[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]50 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]10[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]70 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]9[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]80 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]8[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]90 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]7[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]105 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]6[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]112 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]5[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]120 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]4[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]129 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]3[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]136 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]2[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]140 [/color][color=Black]: [/color][color=Purple]chiffre [/color][color=DarkCyan]= [/color][color=Navy]1[/color]

[color=Blue]endselect
serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]135[/color][color=Black],#[/color][color=Purple]chiffre[/color][color=Black],[/color][color=Red]" "[/color][color=Blue])
pause [/color][color=Navy]550[/color]
[color=Blue]loop[/color]
mais maintenant j'ai un gros point d'interrogation sur la tête:confused:
comment gerer par programme les unités et dizaines et le zero
parceque je pense m'en servir pour commander le pont tournant vers les voies de garage...
il va falloir utiliser des cases memoires non?
oui vous avez raisons je suis nulle! mais j'essais de me soigner ;)
 

PieM

Senior Member
mais maintenant j'ai un gros point d'interrogation sur la tête:confused:
comment gerer par programme les unités et dizaines et le zero
Un clavier numérique en principe comprend les chiffres de 0 à 9 et une touche de valitation (return sur un ordi) la dernière touche peut être utilisée comme retour en arrière pour corriger.
Après vous rentrez le nombre que vous voulez. c'est à gérer par le soft.
 

BESQUEUT

Senior Member
Pas la peine d'insister si ce clavier donne de telles valeurs ! Il y a un gros problème! si les valeurs lues au multi sont stables, (lues à quel endroit ?) il n'y a aucune raison pour avoir de telles variations de la lecture analogique !
Autre hypothèse :
tel quel, ce programme lit immédiatement la tension dès que ce n'est plus 5V (255). Mais il est possible que la tension ne soit pas immédiatement très stable. Peut être faudrait-il attendre un peu avant de lire ?
Genre :
Code:
do
   readadc a.0 , touche
   if touche  < 200 then
      pauseus 100     ' valeur à ajuster...
      readadc a.0 , touche
      select case touche
...
NB : une fois que vous déclarez un symbole, merci de l'utiliser systématiquement, sinon on ne comprends plus rien : une fois c'est b1, une fois c'est "touche" ...
 

dje8269

Senior Member
+1 ; j'avais pas osé le dire, peur de passer pour un con encore une fois ;) . Mais la c'est ur que ca fonctionne parfaitement , perso c'est ce que j'aurais fais ; J'avais fais des tests sur le temps d'appui d'un BP , il s'est averé , en appuyant le plus vite possible , un appui durait environ 60ms . a ajuster comme dis par Besqueut pour n'obtenir aucun raté .
 

PieM

Senior Member
Mais il est possible que la tension ne soit pas immédiatement très stable.
Une lecture ana est quasi instantanée. Je pense que ces variations viennent bien de la qualité du clavier et de ses résistance de contact qui peuvent monter à 200 Ohm sur certains !
Par rapport aux R390 l'incidence est énorme. l'amélioration avec des résistances plus grande tendrait à le confirmer.
De toute façon, la gestion d'un clavier va demander un programme un peu plus fourni ! Puisqu'il y a des nombres à rentrer, il faut éviter la répétition de chaque touche, en contrôlant que l'on retrouve un niveau haut avant chaque nouvelle lecture.
L'utilisation d'un clavier n'est pas la solution la plus simple, surtout pour débuter!
La solution clavier la plus sûre est la scrutation numérique ligne / colonnes mais cela demande 7 E/S.
 

BESQUEUT

Senior Member
Une lecture ana est quasi instantanée. Je pense que ces variations viennent bien de la qualité du clavier et de ses résistance de contact qui peuvent monter à 200 Ohm sur certains !
Par rapport aux R390 l'incidence est énorme. l'amélioration avec des résistances plus grande tendrait à le confirmer.
Reste que la tension ne passe pas instantanément de 5v à quelques volts, et qu'en fonction de la qualité du clavier, il y a peut-être même des rebonds. Par contre au bout d'un certain temps, la tension est probablement bien plus stable (ce que semble indiquer le voltmètre).
Il n'est jamais bon de mesurer une valeur analogique pile au moment où elle est en train de changer...

Par ailleurs, si on utilise les valeurs retournées par le Picaxe et non les tensions mesurées, une résistance parasite de 200 ohms n'a aucune influence si elle est stable. Pour que ce soit l'explication, il faudrait non seulement que ce clavier introduise une résistance parasite, mais qu'en plus elle soit très variable. C'est possible, mais j'ai quand même un doute.

Bien évidement, il faudra éviter la répétition automatique. Mais la première tempo à mettre en place c'est d'attendre un peu après l'enfoncement de la touche avant de mesurer la valeur analogique.
 
Last edited:
Top