Dans cet article, nous explorons l'utilisation d'un Wii Nunchuk avec un ESP32 Cheap Yellow Display (ESP32-2432S028).
Wii Nunchuk
Lancé en 2006, le Nunchuk était distribué avec la console Wii de Nintendo. Pour certains jeux qui nécessitaient la contribution des deux mains, on devait brancher le Nunchuk dans la Wii Remote. Ce qui est intéressant pour les bidouilleurs que nous sommes, c'est que le Nunchuk comporte un joystick, deux boutons et un accéléromètre, et qu'il communique les données de tous ces capteurs par le protocole i2c. On peut donc l'utiliser comme périphérique d'entrée avec un microcontrôleur comme, par exemple, l'ESP32.
Pour faciliter la connexion, j'ai utilisé un adaptateur pour Nunchuk, ce qui a l'avantage de laisser le connecteur du Nunchuk intact. Sinon, il est possible d'accéder directement aux fils conducteurs en coupant le câble du Nunchuk près de l'embout.
Connexion du Nunchuk au Cheap Yellow Display
Comme toujours, le meilleur moyen de brancher un capteur i2c au CYD est d'utiliser le connecteur CN1, situé à côté du lecteur de carte microSD. Ce connecteur donne accès à une alimentation de 3,3 V ainsi qu'aux broches GPIO 22 et 27.
Sur mon adaptateur, les 4 connecteurs sont identifiés de cette façon: + , - , d et c. Sur celui qui est commercialisé par Adafruit, c'est plutôt Vin, GND, SCL et SDA.
J'ai branché l'adaptateur pour Nunchuk au CYD de cette façon:
- Sortie 3,3 V du CYD (fil rouge sur la photo): connecteur + ou VIN de l'adaptateur Nunchuk.
- GND du CYD (fil noir sur la photo): connecteur - ou GND de l'adaptateur Nunchuk
- GPIO22 du CYD (fil bleu sur la photo): connecteur d ou SDA de l'adaptateur Nunchuk *
- GPIO27 du CYD (fil jaune sur la photo): connecteur c ou SCL de l'adaptateur Nunchuk *
* On aurait pu aussi inverser les GPIO22 et GPIO27, c'est à l'intérieur du sketch que nous indiquerons quel GPIO reçoit les données (SDA) et quel GPIO produit le signal d'horloge (SCL).
Installation de la bibliothèque
J'ai aussi installé la bibliothèque Nintendo Extension Ctrl dans l'IDE Arduino.
Vous pouvez ensuite ouvrir l'exemple Nunchuk_Demo, qui est fourni avec la bibliothèque:
Menu Fichier - Exemples - Nintendo Extension Ctrl - Nunchuk - Nunchuk_Demo.
Mais attention: pour que l'exemple Nunchuk_Demo fonctionne avec le Cheap Yellow Display, il faut le modifier légèrement, puisque le GPIO27 n'est généralement pas utilisé pour la communication i2c.
Il faut ajouter cette ligne au début du sketch (voir ligne 27 sur la saisie d'écran ci-dessous):
#include <Wire.h>;
Il faut également remplacer l'instruction "nchuk.begin();" (ligne 34 dans la saisie d'écran ci-dessous) par:
Wire.begin(22,27);
Suite à ces modifications, l'état du joystick, des boutons et de l'accéléromètre du Nunchuk devraient s'afficher dans le moniteur série.
Exemple d'application: un jeu d'arcade
L'application la plus évidente du Nunchuk est un jeu d'arcade, puisque c'est exactement ce pour quoi il a été conçu. J 'ai programmé un jeu dans lequel un mobile (cercle rouge) doit se déplacer à travers un labyrinthe afin d'atteindre une cible immobile (cercle vert). Une fois la cible atteinte, elle apparaît à un autre endroit, où il faut à nouveau la rejoindre.
Pour ce jeu, l'écran a été divisé en une grille de 192 carrés de 20 pixels de côté (12 rangées de 16 cellules). Les caractéristiques du labyrinthe sont stockées dans la matrice "labyrinthe": on a attribué à chaque cellule une valeur numérique qui indique s'il y a une paroi sur le côté droit ou sur le côté du bas.
Selon la position du joystick du nunchuk, on déplace le cercle rouge dans la direction désirée, en prenant soin de ne pas traverser les paroi du labyrinthe.
-
-
Yves Pelletier
Ces articles pourraient également vous intéresser:











.png)






































