USB_Game16: Contrôleur de joystick



Description du projet

Pour réaliser certains projets, un circuit permettant de relier 16 boutons (dont 4 sont directionels) à un ordinateur via USB est très pratique.

Exemples d'applications:

Caractéristiques du projet:

Ce projet est basé sur le microcontrôleur ATmega8a d'Atmel. Ce microcontrôleur ne supporte pas USB nativement alors j'ai utilisé le pilote USB logiciel-seulement codé par Objective Development. Ce pilote permet a un microcontrôleur AVR de communiquer en USB avec un minimum de composantes externes.


goto top Retour en haut


Câblage

Diagramme de câblage

Diagramme de câblage

Le câblage n'est pas très compliqué. Pour chaque bouton, deux fils. D'abord le conducteur de l'entrée respective (Direction ou Bouton X) et ensuite le conducteur commun (GND dans ce design).

Le logicile s'attends à ce que le boutons soient de type normalement ouvert (NO). Il faut donc sélectionner ce type ou utiliser les broches correspondantes (souvent marquées "NO" et "COM").

Note: Normalement Ouvert = Conduit lorsqu'appuyé. Le mot 'ouvert' est pour 'circuit ouvert'.


Voici maintenant à quel GPIO corresponds chaque fonction.
Nom AVRFonction Nom AVRFonction
PORTD 4HautPORTC 5Bas
PORTC 4GauchePORTD 3Droite
PORTC 3Bouton 12 PORTC 2Bouton 11
PORTB 5Bouton 10 PORTC 1Bouton 9
PORTD 5Bouton 8 PORTB 4Bouton 7
PORTB 3Bouton 6 PORTB 2Bouton 5
PORTB 1Bouton 4 PORTB 0Bouton 3
PORTD 7Bouton 2 PORTD 6Bouton 1

goto top Retour en haut


Programmation du microcontrôleur

Les microcontrôleurs sont des pièces qui doivent être programmées. Voici le fichier à programmer:
usb_game16-1.0.hex
Le microcontrôleur doit être configuré pour utiliser un cristal haute fréquence. La valeur par défaut des fuses ne conviennent pas. Pour ce projet, voici les bonnes valeurs:
high byte = 0xc9, low byte = 0x9f

Pour de l'information sur la programmation d'un AVR, visitez ma page sur la programmation d'AVR

goto top Retour en haut


Code source

Le code source est disponible sous license GPLv2 et est compilé avec avr-gcc. Pour éviter des conflits, si vous faites des changements au report descriptor, ne distribuez pas le résultat sans avoir remplacé le USB Vendor+product ID par le votre.
usb_game16-1.0.tar.gz

goto top Retour en haut


Exemple 1: Câblage NeoGeo

Les contrôles de NeoGeo utilisent une prise de type DB15 standard et sont d'une conception très simple qui utilise un fil par bouton en plus d'un conducteur commun. Il est donc facile de réaliser un adaptateur en utilisant ce circuit.

Voici une table expliquant comment utiliser un joystick NeoGeo sur ce circuit:
DB15Nom NeoGeoNom USB_Game12Commentaire(s)
1 Common Gnd (n'importe lequel)
3 Select Bouton 6
4 D Button Bouton 4
5 B Button Bouton 2
6 Right Right
7 Down Down
8 +5v VCC Pour certaines manettes seulement
9 D Button Bouton 4 Double de la pin 4
11 Start Bouton 5
12 C button Bouton 3
13 A button Bouton 1
14 Left Left
15 Up Up
(Les broches 2 et 10 du DB15 ne sont pas utilisées)

goto top Retour en haut


Exemple 2: Manette arcade

Voici un exemple de manette d'arcade à 4 boutons. Comme je n'avais que des boutons (pas de joystick), j'ai décidé d'expérimenter en installant quatres boutons en croix pour les directions. C'était difficile à utiliser au début et je me suis même dit que j'avais fait une erreur. Mais après quelques minutes de jeu, je me suis rendu compte que je m'étais habitué et que ce n'était pas si mal... exemple

Comme nous pouvons le voir ici, j'ai soudé les fils directement sur les microswitch. Cela n'est pas idéal pour la maintenance, mais bon.

exemple exemple

Je compte revoir le positionnement et le nombre de boutons. Aussi, je compte faire (ou faire faire) une finission beaucoup plus artistique. À suivre..

goto top Retour en haut


Avertissement

Je ne saurais être tenu responsable pour les dommages que la mise en œuvre des instructions présentées sur cette page pourraient causer à votre équipement ou à vous-même. Aussi, je ne donne aucune garantie quant à l'exactitude des informations et à leur fonctionnement. Notez toutefois que les procédures ci-haut ont fonctionnées sans aucun problème pour moi.

goto top Retour en haut


Les marques de commerce utilisées dans ce site appartiennent à leurs propriétaires respectifs.
Copyright © 2002-2014, Raphaël Assénat
Site codé avecSite codé avec vimDernière mise à jour: 7 Novembre 2014 (Vendredi)