Clavier matriciel : analyse de tension

BESQUEUT

Senior Member
Suite à différents essais sur un autre thread, je propose un programme d'analyse des tensions renvoyées par le ReadADC.
L'objectif est de réaliser un oscillo sommaire permettant d'avoir une idée de l'évolution des valeurs lues par le Picaxe lors de la pression d'une touche. Plusieurs hypothèses sont envisagées :
- bascule instantanée de 5V à la valeur correspondant à la touche,
- bascule progressive vers une tension stable,
- bascule vers une tension très instable.
Le programme lit 1000 valeurs dans la mémoire interne, ce qui prends environ 1 seconde.
On a donc un échantillonnage toutes les ms.
Le résultat est récupéré dans le Terminal de PE6 réglé à 19200 bauds, puis enregistré en fichier texte.
Il est ensuite repris sous Excel pour dessiner la courbe.
Code:
#picaxe 40X2
#no_table

symbol Touche= b1
symbol i =w27
setfreq em16

do
	readadc d.1, Touche
	if Touche<230 then
		high d.2
		high d.3
		ptr=0
		@ptrinc=touche
		for i=1 to 1000
			readadc d.1, @ptrinc
	'		pause 4
		next i
		low d.3

		setfreq m16
		ptr=0
		for i=0 to 1000
			Touche=@ptrinc
			sertxd(#Touche,13)	' 19200 bauds
		next i

		setfreq em64
		do 
			readadc d.1, Touche
		loop until Touche>240
		low d.2
	endif

loop
La LED câblée en D.2 permet de visualiser l'indisponibilité du Picaxe.
La LED câblée en D.3 permet de visualiser la période d'échantillonnage.
 

BESQUEUT

Senior Member
Oscillo.jpg
Courbe obtenue avec un potentiomètre câblé entre le 0 et le 5V.
Au départ on est en butée à 5V.
Puis on fait un rapide aller-retour.
 

zeltron

Senior Member
heu...c'est quoi Mr le terminal?
la communication se fait par le port usb?
Si c'est par un port serie rs232 je n'en suis plus équipé sur mon pc...
comment récuperer le fichier?
 
Last edited:

BESQUEUT

Senior Member
heu...c'est quoi Mr le terminal ?
Dans PE6, onglet PICAXE, bouton "Terminal"
Mettre "baud rate" à 19200 puis cliquer sur "Open Port"
Appuyer sur une touche.
Les 2 leds s'éclairent et au bout d'une seconde, 1 des 2 s'éteint et les valeurs commencent à arriver.
Quand c'est fini, la deuxième led s'éteint.
Appuyer sur le bouton "save" pour enregistrer dans un fichier texte (dont le nom indique la touche utilisée...) .
On peut recommencer pour une autre touche.

Physiquement, la liaison se fait par le convertisseur USB/série utilisé pour la programmation.
Donc, à part les éventuelles LEDs, il n'y a rien à changer dans votre montage.
 

zeltron

Senior Member
ok merci je comprend mieux
je vais peut être passer pour un con à vous poser cette question
mais pourquoi lire d.1 alors que mon clavier est câbler en a.o
y'a til une raison special ou bien c'est un programme générique que je dois modifier?
 

BESQUEUT

Senior Member
mais pourquoi lire d.1 alors que mon clavier est câbler en a.o
y'a til une raison special ou bien c'est un programme générique que je dois modifier?
Aucune raison autre que le fait que ça correspond au câblage de ma platine de test.
De même pour les LEDs, vous devez adapter...(ou omettre puisque ce n'est qu'indicatif)

Vu les paramètres que vous jugez "optimaux" (vers 250ms) j'ai le sentiment que la tension diminue progressivement quand on enfonce la touche, puis remonte au relâché.
Il faudrait donc détecter le minimum.
Ce n'est pas très difficile, mais si possible je préfèrerais avoir confirmation avant de mettre au point un programme.
 

BESQUEUT

Senior Member
bp1.jpgbp12.jpg
Les courbes correspondantes.
On comprends bien mieux pourquoi la première lecture est forcément erronée et pourquoi une pause améliore les choses.
On devrait pouvoir mettre au point un programme plus universel, capable de s'adapter à n'importe quel type de clavier sans avoir besoin d'ajuster cette pause, par exemple en détectant une certaine stabilité dans les mesures, et/ou un changement de variation.
Comme l'a justement remarqué PieM dans l'autre thread, la résistance parasite du clavier peut évoluer. Il est donc d'autant plus important que le programme s'auto adapte à la situation.
 
Last edited:

dje8269

Senior Member
Si personne ne se lance , et par passion, (j'avoue aussi mon drone commence a m'énerver car je n'y arrive pas, je me mélange les pinceaux, alors ça me fera une pause), ce soir j'essayerai de pondre un pseudo programme encore un peu mieux . Par contre Zeltron, il me faudrait toute les courbes de tout les boutons ? mettez les , les unes a la suite des autres , ( avec une séparation hein ,) comme ça, ça tiendra que dans un seul documents txt
 

dje8269

Senior Member
Ah tiens ? Auriez-vous des problèmes pour faire communiquer vos Picaxes en temps réel ?
Non pas vraiment sur la com . Tout va bien de ce coté la . quoi que ! c'est plutôt le cote backup qui est trés délicat à parametrer .

Pour la com j'avoue que des fois des " bugs" ou "parasites" se glissent et c'est embêtant !
 

zeltron

Senior Member
Si personne ne se lance , et par passion, (j'avoue aussi mon drone commence a m'énerver car je n'y arrive pas, je me mélange les pinceaux, alors ça me fera une pause), ce soir j'essayerai de pondre un pseudo programme encore un peu mieux . Par contre Zeltron, il me faudrait toute les courbes de tout les boutons ? mettez les , les unes a la suite des autres , ( avec une séparation hein ,) comme ça, ça tiendra que dans un seul documents txt
je vais au boulo vous aurez ça vers 23h...
 

BESQUEUT

Senior Member
Dommage tu vas décevoir quelqu'un ! Et dommage aussi que personne d'autre ne t'ai offert ses lumières sur ce sujet.
Non, pas déçu : au contraire très content que Dje soit parvenu à ses fins !
Et si je ne l'ai pas aidé sur ce point c'est parce que j'ai essayé et ne suis jamais parvenu à quelque chose de vraiment fiable dès lors que l'on a deux ports série ouverts simultanément sur un même Picaxe. De même, je suis mauvais en électronique et je suis très content quand un PieM me montre la configuration optimale d'un ampli-op pour décaler une tension.
Donc quand je ne sais pas je ne dis rien.
Si je parle de ça au sujet du projet de Zeltron, c'est pour mettre en évidence que ce que l'on semble gagner en simplicité en répartissant le travail sur plusieurs Picaxes, on le reperd au niveau des communications.
Après, ça dépends évidement du cahier des charges et des interactions à prévoir entre les différents sous-systèmes.
Pour moi, c'est plus facile de synchroniser des modules au sein d'un même Picaxe, que de synchroniser des Picaxes au moyen de fils.
Mais je conçois tout à fait que pour d'autres l'inverse soit vrai.
Et pour aller dans votre sens, rien n'interdit d'étudier les fonctions individualisées sur différents Picaxes, d'expérimenter séparément les techniques de communication entre Picaxes et de choisir in fine la meilleure approche.
 
Last edited:

dje8269

Senior Member
Pas de problème les gars ; tout les avis sont bon a prendre !. j'ai salement galérer avec la com, mais j'en ressort que plus fort, en ayant des notions, sur l'i2c le serout, le hserout , le multi-maitre et j'en passe ; Tout le monde aide comme il veut et comme il peut .
Moi je suis un gros demandeur , car je suis passionné, novice, tenace, curieux , et toujours en quête de perfection et de savoir ! Grâce a vous je remplis beaucoup de ca ! Les différences apportent des angles différents et ouvrent des voies.
PS:je crois que j'ai encore plus compliqué avec mon back up .
 
Last edited:

dje8269

Senior Member
Et voila ;

bon j'avoue , que les chiffres ne sont pas buvables tous a la suite comme ca ; la courbe de BESQUEUT etait plus explicite , et definissait une notion de temps . Donc ca demanderais quelques ajustement a mon avis .

Le principe ; on détecte l'appui siu le BP quand la valeur n'est plus de 255 .
on fais une pause de 50ms ( pause 100 a 16Mhz) . Afin d'essayer de stabiliser un peu la tension . ensuite un récolte 20 valeurs de suite , pour en faire la moyenne ainsi je pense qu'on rétrécie la fourchette ; les valeurs max et min seront ainsi éliminées en quelques sortes.
On obtient donc une valeur moyenne . maintenant il faudrait déterminer le milieu entre deux valeurs moyennes .
j'ai inversé les case , car c'est avec le bouton 12 ( celui qui prends le plus de temps a se stabiliser) qu'on as les plus gros problémes de detection , c'est donc lui qui donc avoir la plus grande marge de man&#339;uvre .

je n'ai pas changer les valeurs a part pour le 12 . Si ce programme focntionne a peu pret , on pourrat l'affiner en me communiquant les valeurs lues quand on appui sur les BP , pour voir si vos seuils sont optimaux .

Code:
#PICAXE 40X2  

Symbol touche = b2
Symbol nombre = b3
Symbol compteur = b4
Symbol addition = w27

'initialisation ======================================
setfreq m16             'frequence 16MHz interne

SerOut B.7, N2400_16,( 254, %00000001 )   ' efface l'ecran
pause 1000
'programme principal #####################################
do
   serout B.7,N2400_16,(254,128,"touche=")
   gosub clavier
loop
's/programma saisie clavier ===========================
clavier:
nombre = 0
do
	do 
		readadc a.0 , touche    ' On detecte un appui
	loop while touche > 250 
	
	pause 100
	
	for compteur = 0 to 19 		' on mesure 20 fois
		readadc a.0 , touche    	' On lit la touche appuyee
		addition = addition + touche	' on fait la somme
	next

	touche = addition / 20
	addition = 0
	
select case touche  'on reaffecte aux touches leurs vraies valeurs sauf # et *
   case > 140 : touche = 1
   case > 136 : touche = 2
   case > 129 : touche = 3
   case > 120 : touche = 4
   case > 112 : touche = 5
   case > 105 : touche = 6
   case > 90 : touche = 7    
   case > 80 : touche = 8
   case > 70 : touche = 9
   case > 50 : touche = 11 'correction
   case > 30 : touche = 0
   case > 0 : touche = 12 'validation
   
endselect

select touche
   case = 12
	pause 500
	return     		'fin de la saisie clavier
   case = 11               'correction dernier chiffre
      nombre = nombre/10   
   case < 240              'un chiffre valide est rentré
      nombre = nombre*10 + touche 'ajout du chiffre
      
endselect
   serout B.7,N2400_16,(254,135,#nombre," ")
'puis on attend que les touches soient relachees pour eviter les repetitions
   do
   readadc a.0 , touche 
   loop while touche < 250    
   pause 200
loop
 

PieM

Senior Member
voilà voilà j'arrive!View attachment 17694
2015-01-17 001.jpg

Belle mise en évidence que la dispersion est fonction directe de la valeur de la résistance du réseau, donc de l'incidence relative de la résistance de contact !
Dommage de passer du temps à faire des mesures qui ne vont pas servir à grand chose, aux dépends de l'avancement général du projet et de la réflexion sur sur ses fonctions à assurer.
 

dje8269

Senior Member
Dommage de passer du temps à faire des mesures qui ne vont pas servir à grand chose
Ca ,PieM , c'est toi qui le dit . Que TOI tu connaisse parfaitement la dispersion en fonction de la valeur de la résistance du réseau, donc de l'incidence relative de la résistance de contact, je n'en doute pas . Je suppose qu'en ton temps tu as appris à le connaitre, et que ca n'est pas venu du saint esprit . Ben moi je suis en train d'apprendre a la connaitre comme toi il y quelques année.

Le temps perdu, c'est surtout le mien , et je le trouve pas perdus de mon point de vue . Certes zeltron en a perdu aussi pour me donner ces chiffres.
Je suis complètement d'accord avec toi, sur le fait que ce système ne pourras jamais être fiable a 100%, car il dépendra du temps d'appui et de la force d'appui , de la T° etc ... . J'essaie de minimiser les erreurs pas de les enlever totalement . Car moi , personnellement avec le recul , j'aurais utilisé un picaxe dédié a l'affichage et au clavier, en passant par la solution numérique ( les 7i/o) .
 

PieM

Senior Member
Que TOI tu connaisse parfaitement la dispersion en fonction de la valeur de la résistance du réseau, donc de l'incidence relative de la résistance de contact, je n'en doute pas . Je suppose qu'en ton temps tu as appris à le connaitre
ça se calcule très simplement et c'est quelque chose que j'ai déjà dit il y a maintenant un bout de temps.
De temps en temps il faut faire une règle de trois pour savoir où l'on va. Il n'y a pas de science infuse.
Et le graphique donné est la représentation des valeurs mesurées par Zeltron. Je n'ai même pas fait le moindre calcul.
 

zeltron

Senior Member
résultat du test
chaque chiffres des touches est décallé de 1
donc si je frappe sur 1 j'ai 2 etc jusqu'a 8
à 9, 10 j'ai 0
par contre j'ai bien en # le return
 

dje8269

Senior Member
Oui il y a un decalage que je pense avoir corrigé, sans vouloir abuser de ton temps , il faudrait aussi les valeurs comme ici pour bien déterminer les seuils entre deux !.

voici une modif faites avec les valeurs récupérées sur le lien plus haut pas forcement a jour :

Code:
#PICAXE 40X2  

Symbol touche = b2
Symbol nombre = b3
Symbol compteur = b4
Symbol addition = w27

'initialisation ======================================
setfreq m16             'frequence 16MHz interne

SerOut B.7, N2400_16,( 254, %00000001 )   ' efface l'ecran
pause 1000
'programme principal #####################################
do
   serout B.7,N2400_16,(254,128,"touche=")
   gosub clavier
loop
's/programma saisie clavier ===========================
clavier:
nombre = 0
do
	do 
		readadc a.0 , touche    ' On detecte un appui
	loop while touche > 250 
	
	pause 100
	
	for compteur = 0 to 19 		' on mesure 20 fois
		readadc a.0 , touche    	' On lit la touche appuyee
		addition = addition + touche	' on fait la somme
	next

	touche = addition / 20
	addition = 0
	
select case touche  'on reaffecte aux touches leurs vraies valeurs sauf # et *
   case > 133 : touche = 1
   case > 128 : touche = 2
   case > 122 : touche = 3
   case > 111 : touche = 4
   case > 105 : touche = 5
   case > 98 : touche = 6
   case > 81 : touche = 7    
   case > 71 : touche = 8
   case > 60 : touche = 9
   case > 35 : touche = 11 'correction
   case > 25 : touche = 0
   case > 0 : touche = 12 'validation
   
endselect

select touche
   case = 12
	pause 500
	return     		'fin de la saisie clavier
   case = 11               'correction dernier chiffre
      nombre = nombre/10   
   case < 240              'un chiffre valide est rentré
      nombre = nombre*10 + touche 'ajout du chiffre
      
endselect
   serout B.7,N2400_16,(254,135,#nombre," ")
'puis on attend que les touches soient relachees pour eviter les repetitions
   do
   readadc a.0 , touche 
   loop while touche < 250    
   pause 200
loop
 

dje8269

Senior Member
maintenant au sein d'un autre programme principale je ne sais pas si ça rendra le même effet...?
tout dépend de ce que dois faire le programme principal .

Si le programme principal doit faire tourner des fonctions en permanence, ca risque d'être dur . car pendant qu'on tapera sur le clavier, le programme principal ne pourra rien faire d'autre .

En tout cas jolie vidéo, ca fait plaisir d'avoir un retour . mais la rapidité ne rentre que sur l'appui d'une touche , pas de deux a la suite . pas besoin de vous depechez pour appuyer sur les deux touches . Mais il aurait fallu testé en appuyant doucement sur une touche ;

c'est quel programme celui de la vidéo ? le mix entre PieM et moi ? ou celui avec le moyennage ?
 

zeltron

Senior Member
Alors maintenant y'a plus de décallage mais la touche 0 ne marche pas ou uniquement si c'est la 1er frappe apres un reset
mais pour l'histoire du rebond je pense ne pas voir si ce dernier programme est meilleure que celui de la video ci dessus
car ici vouloire plus que la crémiere heu c'est la crémiere...;)
 

zeltron

Senior Member
le mix entre vous et Piem
celui ci
Code:
[color=Navy]#PICAXE [/color][color=Black]40X2  [/color]

[color=Blue]symbol [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]Symbol [/color][color=Purple]nombre [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]

[color=Green]'initialisation ======================================[/color]
[color=Blue]setfreq m16             [/color][color=Green]'frequence 16MHz interne[/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'ecran[/color]
[color=Blue]pause [/color][color=Navy]1000[/color]
[color=Green]'programme principal #####################################[/color]
[color=Blue]do
   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])
   gosub [/color][color=Black]clavier[/color]
[color=Blue]loop[/color]
[color=Green]'s/programma saisie clavier ===========================[/color]
[color=Black]clavier:[/color]
[color=Purple]nombre [/color][color=DarkCyan]= [/color][color=Navy]0[/color]
[color=Blue]do
      do 
            readadc a.0 [/color][color=Black], [/color][color=Purple]touche    [/color][color=Green]' On detecte un appui
      [/color][color=Blue]loop while [/color][color=Purple]touche [/color][color=DarkCyan]> [/color][color=Navy]250 
            
      [/color][color=Blue]pause [/color][color=Navy]50                      [/color][color=Green]' Pause a ajuster 
      [/color][color=Blue]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]touche  [/color][color=Green]'on reaffecte aux touches leurs vraies valeurs sauf # et *
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]20 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]12  [/color][color=Green]'validation
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]30 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]0
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]50 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]11 [/color][color=Green]'correction
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]70 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]9
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]80 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]8
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]90 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]7
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]105 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]6    
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]112 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]5
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]120 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]4
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]129 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]3
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]136 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]2
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]140 [/color][color=Black]: [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Navy]1[/color]
[color=Blue]endselect[/color]
[color=Green];if nombre > 99 then 
      ;nombre = 99
      ;endif[/color]
[color=Blue]select [/color][color=Purple]touche
   [/color][color=Blue]case [/color][color=DarkCyan]= [/color][color=Navy]12
      [/color][color=Blue]pause [/color][color=Navy]500
      [/color][color=Blue]return      [/color][color=Green]'fin de la saisie clavier
   [/color][color=Blue]case [/color][color=DarkCyan]= [/color][color=Navy]11               [/color][color=Green]'correction dernier chiffre
      [/color][color=Purple]nombre [/color][color=DarkCyan]= [/color][color=Purple]nombre[/color][color=DarkCyan]/[/color][color=Navy]10   
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]240              [/color][color=Green]'un chiffre valide est rentr?
      [/color][color=Purple]nombre [/color][color=DarkCyan]= [/color][color=Purple]nombre[/color][color=DarkCyan]*[/color][color=Navy]10 [/color][color=DarkCyan]+ [/color][color=Purple]touche [/color][color=Green]'ajout du chiffre
      [/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]nombre[/color][color=Black],[/color][color=Red]" "[/color][color=Blue])[/color]
[color=Green]'puis on attend que les touches soient relachees pour eviter les repetitions
   [/color][color=Blue]do
   readadc a.0 [/color][color=Black], [/color][color=Purple]touche 
   [/color][color=Blue]loop while [/color][color=Purple]touche [/color][color=DarkCyan]< [/color][color=Navy]250    
   [/color][color=Blue]pause [/color][color=Navy]200[/color]
[color=Blue]loop[/color]
par contre en ligne 41 (en commentaire maintenant )j'ai programmé mon 1er code ce n'est pas une réussite c'était pour interdire un chiffre > que 99 car je ne pense pas en avoir besoin et ça pose des pbs...
je pense que le codage est bon mais mal placé?
 
Last edited:

dje8269

Senior Member
Essayer de remplacer

case > 25 : touche = 0

Par

case > 20: touche = 0

Sans les dernières valeurs à jour , demandées au dessus je travaille à l'aveugle pour "calibrer" les seuils
 

zeltron

Senior Member
oui avec 20 c'est bon
je vous redonne des valeurs mais je ne comprend pas pourquoi elles n'ont pas du varier?
puisquelle dépendent du pont diviseur et pas du programme?
bp1 139-137 bp2 131 bp3 127-125
bp4 116,117 bp5 =107,108,109 bp6 99,107
bp7 86,87 bp8 75 bp9 61,62
bp10 43 bp11=24,25 bp12 =2-8
mais c'est moins preci que la methode oscillo...
effectivement la touche 11 à 24, 25 je comprends que ça pose des pbs
 

BESQUEUT

Senior Member
Touches.jpg
Voici les données sous forme de graphique.
Je pense que les seuils peuvent être lus directement sur le graphique en traçant une verticale entre 97 et 121 et en choisissant les valeurs entre les lignes.
C'est normal qu'ils aient un peu changé avec ce nouveau programme puisqu'il s'agit d'une moyenne de 20 valeurs prises au bout d'un certain temps.
Je n'ai pas le temps ce WE, mais j'essayerai de faire une proposition cette semaine, y compris par la méthode du "multitâche collaboratif" et y compris en essayant de lire le clavier en même temps que le pilotage du moteur PAP.
Beau cahier des charges, mais il faut du temps...
 

PieM

Senior Member
oui avec 20 c'est bon
je vous redonne des valeurs mais je ne comprend pas pourquoi elles n'ont pas du varier?
puisquelle dépendent du pont diviseur et pas du programme?
bp1 139-137 bp2 131 bp3 127-125
bp4 116,117 bp5 =107,108,109 bp6 99,107
bp7 86,87 bp8 75 bp9 61,62
bp10 43 bp11=24,25 bp12 =2-8
mais c'est moins preci que la methode oscillo...
effectivement la touche 11 à 24, 25 je comprends que ça pose des pbs
Ce qui correspond très exactement aux valeurs calculées depuis le début compte tenu des valeurs de résistance... Etonnant non ?

2015-01-17 002.jpg
 

PieM

Senior Member
c'était pour interdire un chiffre > que 99 car je ne pense pas en avoir besoin et ça pose des pbs...
je pense que le codage est bon mais mal placé?
Il y a plusieurs façon de voir la chose:
une simple consiste à provoquer un return dès que nombre est >9
pour cela écrire après
Code:
serout B.7,N2400_16,(254,135,#nombre," ")
	[COLOR="#FF0000"]if nombre >9 then return : endif[/COLOR]
sinon,

Code:
case < 240       
 if nombre <10 then     
nombre = nombre*10 + touche 'ajout du chiffre
endif
ce qui empèche de frapper un 3e chiffre, mais permet de corriger le denier rentré.

Au choix...
 

dje8269

Senior Member
Ce qui correspond très exactement aux valeurs calculées depuis le début compte tenu des valeurs de résistance... Etonnant non ?
Oui c'est vrai . ton tableau est tiré de toutes les valeurs ou seulement de la conversion du Readadc? En tout il est très parlant .

cela montre aussi très bien , que la théorie , reste de la théorie ; le BP12 le montre bien , en théorie il devrait être de 0 dans la réalité beaucoup plus ; on pourrait etre encore plus pointilleux mais bon , si ca convient a Zeltron , c'est parfait .

en tout cas j'ai hate de voir la suite du travail de Zeltron sur le pont tournant . Ca va finir par me faire aimer les trains lol
 

PieM

Senior Member
le BP12 le montre bien , en théorie il devrait être de 0 dans la réalité beaucoup plus
Comme déjà dit seule sa résistance de contact est dans le circuit résistif en série avec 4.7k. donc son incidence est très grande.
 

dje8269

Senior Member
Ah ben Michel, c'est sur que si on change le hard !
Mais il prend 12 entrées ce clavier non? Autant faire en numérique avec 7 I/Ô comme l'avait propose Pied
 

PieM

Senior Member
J'admire votre persévérance, cette recherche, ce combat vers la perfection, mais je pense encore que la meilleure solution est là:
Bonsoir Michel ,
Je pense que c'est même proche de l'obstination ...
ça ne fait pas trop avancer le schmilblick car pour l'instant on a pas encore fait tourner le pont en lui envoyant une commande parmi d'autres ... et on ne sait toujours pas ce qu'il y a commander d'autre.
 

MGU

Senior Member
Ah ben Michel, c'est sur que si on change le hard !
Mais il prend 12 entrées ce clavier non? Autant faire en numérique avec 7 I/Ô comme l'avait propose Pied
Ben non, une seule, voici le clavier codé de mon portillon (plus besoin de clé).
Mon premier montage picaxe, fonctionne depuis... quelques années, sans aucune erreur.
J'ai remplacé le 08M par un 08M2, le soft est un peu tordu (désolé pour le HS)
http://electromag1.wifeo.com/gache-electronique-codee-programmable-picaxe-.php

MM
 
Top