M. BESQUEUT
Savez-vous à quoi vous vous engagez?
Ben... en fait NON... je dois être un peu
...
J'ai essayé de comprendre votre programme et j'ai beaucoup d'interrogations.
C'était un peu le but...
1-Sur votre tableau "code/touches/volts/ADC"
a- Avez-vous calculé avec les résistances 1k(côté+),22k,10k,4k7,2k2,1k,470?
OUI (sauf erreur de ma part)
b- Comment calculer sur appui simultané de deux touches?
1/R=1/R1+1/R2
Voir
BASIC-Commands/Analogue-InputOutput/readadc10/
C'est exactement la même chose que ReadADC, mais le résultat est sur un word et va de 0 à 1023 au lieu de 0==> 255. Du coup, il est possible de séparer des valeurs proches.
Si on va vers un programme capable de classer l'ordre d'appui des joueurs (et donc pas seulement le premier) ce ne sera pas suffisant, car il peut y avoir des tas de touches enfoncées en même temps. J'ai la solution, mais ne mettons pas la charrue avant les bœufs...
2-Sur le programme 18#
a- Je ne comprends pas le calcul "Volt/2+11/22", le picaxe respecte-t-il les priorités opérationnelles?
C'est équivalent à Volt/44+22. (je ne voulais pas dépasser 255 dans le calcul intermédiaire, mas à la réflexion, je pense que cette limitation n'existe pas même quand on calcule sur un byte)
Ca remplace toute la série des " if Volt > seuil1 and Volt < seuil2"
Vous pouvez vérifier avec différentes valeurs de Volt que le résultat est un nombre entre 0 et 6 correspondant soit à l'absence de touche enfoncée (zéro), soit au numéro de la touche enfoncée.
"Priorités opérationnelles" ? Je ne comprends pas la question. A une tension donnée correspond une ou plusieurs touches. L'ordre d'appui des touches ne peut être déduit d'une unique tension.
Voir
BASIC-Commands/Variables/let/ et chercher DCD.
En gros, on lui donne un nombre N entre 0 et 7 et il renvoie un nombre dont seul le bit d'ordre N est à 1
Les joueurs sont codifiés chacun sur un seul bit, dans la variable lesJoueurs.
Du coup, il est facile de tester si un joueur est éliminé, ou si tous ont tenté leur chance.
Il est également facile de faire clignoter la led d'un joueur puisque la variable lesJoueurs correspond bit à bit avec Outpins
b- A quoi sert et comment utiliser la table?
Pas de chance : DCD n'est pas disponible sur un M2 !
Qu'à cela ne tienne : on va le "fabriquer"...
Après une première tentative via un GOSUB, je me suis dit que comme il n'y a que 8 résultats possibles, il est facile de tabuler ces 8 solutions. Voir
BASIC-Commands/Variables/table/
Notez que %00000001=1
%00000010=2
%00000100=4
etc...
Mais comme je suis très flemmard, je n'ai pas pris la peine de taper les nombres en base 2...
... et j'aurai d'autres questions, mais ce serait abuser.
que nenni...
Commencer à apprendre qqchose, c'est s'ouvrir à une multitude de questions (quelqu'un a dit, en mieux, qqchose de ce genre).
Pour MGU, je vois bien que le Basic n'est pas simple mais il ouvre des possibilités qu'on n'a pas avec un programme graphique.
Le BASIC (en tout cas celui du Picaxe...) est un langage vraiment simple, accessible à un débutant.
La conceptualisation d'un cahier des charges pouvant paraître simple nécessite un peu de réflexion.
Si cette réflexion est correctement menée, le BASIC du Picaxe propose la plupart du temps une solution simple.
Accessoirement, un code simple est plus facile à maintenir, y compris par des personnes tierces.
A bientôt pour de nouvelles
aventures questions...
D'un point de vue général, n'hésitez pas à écrire des petits bouts de code de quelques lignes dans le simulateur, juste pour tester une nouvelle commande. Utilisez sertxd pour voir le résultat.
Sertxd est également très pratique pour débugger un programme. Exemple :
Code:
[color=Blue]table ([/color][color=Navy]0[/color][color=Black],[/color][color=Navy]1[/color][color=Black],[/color][color=Navy]2[/color][color=Black],[/color][color=Navy]4[/color][color=Black],[/color][color=Navy]8[/color][color=Black],[/color][color=Navy]16[/color][color=Black],[/color][color=Navy]32[/color][color=Black],[/color][color=Navy]64[/color][color=Black],[/color][color=Navy]128[/color][color=Blue])
readtable [/color][color=Navy]6[/color][color=Black],[/color][color=Purple]b1[/color]
[color=Blue]sertxd ([/color][color=Red]"b1="[/color][color=Black],#[/color][color=Purple]b1[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])[/color]
Notez également que PE6 vous donne la possibilité de voir toutes vos variables suivant différentes représentations, y compris bit par bit, ce qui est commode dans cet exemple pour vérifier quel bit de b1 a été mis à 1.