Gamoover

[move]Bienvenue sur Gamoover, portail francophone de l'arcade.

Besoin d'aide pour comprendre un capteur analogique et le modifier

Démarré par Arvester, Dimanche 11 Juin 2017, 23:17:19 PM

Arvester

Bonjour à tous, je jette une bouteille à la mer car je me lance dans un truc qui dépasse mes compétences (c'est une bidouille pour apprendre).

Je souhaite réaliser une mini-manette avec un jeu qui tourne sur un Arduino. Tout le code est déjà existant, et est conçu pour utiliser un pavé numérique de ce type:

http://fritzing.org/projects/arduino-5-buttons-keypad

Là où ça coince, c'est que je ne comprends rien au fonctionnement de ce truc, et moi je veux hacker une pcb de manette, qui ne contient que deux contacts par bouton donc, la configuration classique qu'on utilise pour nos boutons arcade. Là il y a trois contacts par bouton, tout est enchevêtré, du coup je suis perdu. En plus il faudrait que j'ajoute un autre bouton (actuellement on a haut bas gauche droite et un bouton, il m'en faudrait un second).

Je comprends un peu ce que raconte le code (si il lit une valeur entre 0 et 50 c'est un appui sur bas), mais j'arrive pas à comprendre cette valeur de 50.

Bref, au secours, ObiWan, vous êtes mon seul espoir !

sushy18

#1
Salut arvy,


j'y comprend que dalle à ton montage...  :D :D
mais de ce que je crois comprendre  lorsque tu appuis sur un bouton la valeur de la résistance
diffère...et du coup la tension entre les borne 1 et 2  aussi ...ce qui permet de savoir quel boutton serait appuyé... en même temps il semblerait que ton montage permette d'utiliser une connection analogique pour un joypad numerique d'où le connecteur jp2.

ensuite si tu veux connecter un hack manette au montage que tu cite perso j'utiliserai que les connecteurs sur la pcb..puis ces 2 connecteurs sur ton montage directement pour que les boutons de ta manettes se substituent au switch s1->S5
si tu test la continuité des 4 pins de tes bouton tu verra que en fait tu n'en a que 2
regarde le schema
tu as 2 x pin1 puis 2x pin 2 a chaques bouton donc une paire... ( et même une masse commune sur les pins 2 )

s2 appuyé = r1
s3 = r1+r2
s4 = r1+r2+r3 etc...


ou alors j'ai dit que de la merde... :fleche:
plus je regarde le schema plus je me dis que c'est pas aussi simple en fait..
Si tu ne sais pas demande, si tu sais partage !!
Faudrait pas perdre de vue qu'une borne d'arcade c'est pas une console, c'est rarement plug n play, plus souvent plug n pschitt... (Funkycochise 2008)
"Gratuit ? C'est déjà trop cher !!" ( Crying Freeman 2016)

Iro

#2
Hello,
Le microswicth n'a pas trois contact différents.
Il à quatre pattes mais deux contacts. Donc 2x1 contacts.
Au final  sur le schéma , sur le même coté les pattes sont reliées ensembles.
Tu le vois bien sur le dernier shéma. tu n'as que 1 et 2.
Par exemple sur S4 avec un contact classique , un pole (2) irait sur les pôles 2 de S3 et S5.
Donc considère la paire 2 du microswitch comme un seul fil.
"Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
Peter Shou Owner' Club

WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF - Ma collec' de panels

LES TUTOS DE GAMO   

Arvester

#3
C'est très confus pour moi... mais j'ai déjà compris que je prenais les boutons dans le mauvais sens, les contacts sont communs verticalement et non horizontalement, c'est ça ?

Donc, à partir de ce schéma:

Sur JP2, 1=GND, 2=5V, 3=out

Je devrai donc, sur ma pcb, câbler des résistances entre le 5V et chacun des boutons, et mettre au même endroit le out ? Mais, sans appui, il y aura un "court-circuit" entre le 5V et le out, avec la résistance R1, non ? Je vois quoi faire je pense, mais le principe même du truc m'échappe, je le sens à portée de mes doigts, j'y suis presque gniiiiiiiiiiii  ;D En plus j'ai l'impression que le schéma électrique ci-dessus diffère de l'implantation des composants,  au-dessus si on n'appuie sur rien on devrait lire uniquement R1 (qui servirait alors à éviter le court-circuit pur et simple), sur l'autre schéma je trouve qu'on devrait lire R1+ un peu de R4+R5 qui semblent en parallèle  :'(

Donc si j'ai bien suivi (sans comprendre ahah), pour rajouter un bouton, je rajoute un S6 en bout de chaîne avec une R6>3.3kO, je mesure les valeurs de résistance pour chaque appui et je modifie les fourchettes dans le programme, c'est bien ça ?

Edit: c'est surtout les infos en gras qu'il faut confirmer ou infirmer, je pense que je comprendrai en fabriquant le truc au fur et à mesure ^^ Mais si l'un de vous à un cours d'électronique se rapportant à tout ça sous la main c'est pas de refus, j'ai toujours voulu m'y mettre et ça me semble un bon moyen ahahah

BigPanik

C'est un montage classique pour avoir des boutons en utilisant qu'une entrée (analogique). Chaque bouton à une resistance au cul, ce qui donne une tension différente en fonction du bouton appuyé. L'arduino converti cette tension en une valeur entre 0 et 255, et on en deduit le bouton appuyé: bouton 1 entre 0 et 50, bouton 2 entre 51 et 100, etc.
L'inconvénient de ce système c'est quand on appuie sur 2 boutons en même temps...

Iro

#5
Citation de: BigPanik le Lundi 12 Juin 2017, 10:07:02 AM
L'inconvénient de ce système c'est quand on appuie sur 2 boutons en même temps...
Et comme l'indique la légende, c'est plutôt fait pour un keypad pour la navigation dans des menus.
Étonnant que ce soit utilisé en joystick.
Surtout que tu dois pouvoir gérer des inputs sur d'autres entrées.
"Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
Peter Shou Owner' Club

WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF - Ma collec' de panels

LES TUTOS DE GAMO   

Arvester

Ah ok, il y a une conversion par l'Arduino. Je me perdais dans les calculs pour trouver d'où sort ce 50 ^^

Pour résumer le projet, je tente de réaliser un clone de Tetris pour un copain. L'ensemble tiendra dans une VMU, les cartes mémoire de Dreamcast. Je veux donc hacker les contrôles de la VMU, en ajoutant simplement un interrupteur on/off sur une tranche.

Bon par contre je me rends compte qu'il faudrait coder tout le système de rotation dans l'autre sens... Je crois que je vais rester sur un seul sens ^^'