IHMA : Interactions Humain-Machine Avancées

Dans cet exercice vous devez implémenter un gamepad basique, avec un joystick et deux boutons.

La carte

La carte elle-même est très basique. Elle se contente de sortir les entrées des deux potentiomètres du joystick et de chaque bouton. les bornes des potentiomètres sont reliés au Vcc et à la masse. Il suffit de lire la valeur discrétisée du pin sur le connecteur pour obtenir la position du joystick. Les boutons ont une résistance de pull down pour forcer la valeur de leur pin à 0 quand le bouton est relâché.

L'ensemble des documentations est disponible ici.

Un binaire montrant le comportement attendu est disponible à ici. Il faut réaliser le Konami code (cf plus bas). En cas d'erreur, la LED orange de la carte clignote deux fois. Quand la séquence est réalisée correctement, la LED verte de la carte clignote deux fois.

Joysticks

Les joysticks possèdent deux potentiomètres. Pour capter la position il suffit de connecter les bornes extérieures au 5V et à la masse, et mesurer la tension sur la borne centrale. La carte a été conçue en ce sens. Branchez les pins des axes sur un ADC. Par exemple les pins PA4 et PA5 sont reliés à l'ADC 1 channel 4 et 5. Ensuite, utilisez l'en-tête

hardware/include/adc.h
:

Testez les deux méthodes

Boutons

Maintenant on veut les entrées des boutons. Branchez-les sur un pin chacun, par exemple PA7 et PA6. Changez l'état de la led de chaque joueur en fonction du bouton. Toujours dans hardware/include/gpio.h, regardez :

Konami code

Vous pouvez maintenant implémenter un easter egg qui allume la LED PG13 de la carte quand l'utilisateur réalise le Konami Code. Pour allumer la LED, utilisez l'en-tête
hardware/include/gpio.h
: