Ignorer la navigation

V. Télécommande Nunchuk

Découverte de la télécommande Nunchuk

 

On va maintenant utiliser une télécommande filaire Nunchuck.

Données techniques :
La carte Arduino Uno est capable de communiquer avec des périphériques par bus I2C à l’aide de ses entrées analogiques 4 et 5 avec la configuration suivante :

  • Entrée analogique 4 (A4) : SDA (serial data line)
  • Entrée analogique 5 (A5) : SCL (serial clock line)


Depuis la version Uno R3 (celle que l'on possède nous), deux nouvelles broches SDA et SCL peuvent être utilisées pour cela. Elles se trouvent à côté de la broche AREF.
Remarque : le bus I²C (Inter Integrated Circuit) fait partie des bus série (les données passent à la queue leu leu, c'est à dire les une à la suite des autres).

La connexion sera réalisée avec un adaptateur :

4 fils sont nécessaires pour connecter la Nunchuk à un circuit électronique, ou une carte arduino :

  •  2 fils pour l’alimentation de la manette :
    • +3,3 Vcc
    • Masse (la masse doit être commune à tous les composants branchés sur le bus I2C)

 

  • 2 fils pour la communication par bus I2C :
    • SDA -> serial data line (par où transitent les données)
    • SCL -> serial clock line (horloge de synchronisation)

Ce qui donne sur notre adaptateur :


    - : relié à la masse (ground ou GND)
    + : relié au 3,3V
    d : relié au SDA
    c : relié au SCL

cela donne :

 

Cette manette contient un joystick 2 axes, 2 boutons et un accéléromètre 3 axes à ±2G.

Les données issues des capteurs de la nunchuk sont codées sur 6 octets (voir tableau ci-après):
  • 1 er Octet (adresse 0x00) : Valeur de l’axe X du joystick analogique (0 à 255).
  • 2 ème Octet (adresse 0x01) : Valeur de l’axe Y du joystick analogique (0 à 255).
  • 3 ème Octet (adresse 0x02) : Valeur de l’axe X de l’accéléromètre. Cette valeur est codée sur 10 bit et dans cet octet sont inscrits les 8 bit de poids fort (bit 9 à 2).
  • 4 ème Octet (adresse 0x03) : Valeur de l’axe Y de l’accéléromètre. Cette valeur est codée sur 10 bit et dans cet octet sont inscrits les 8 bit de poids fort (bit 9 à 2).
  • 5 ème Octet (adresse 0x04) : Valeur de l’axe Z de l’accéléromètre. Cette valeur est codée sur 10 bit et dans cet octet sont inscrits les 8 bit de poids fort (bit 9 à 2).
  • 6 ème Octet (adresse 0x05) : bit 0 → Etat du bouton Z (0: appuyé ; 1: relâché)
    •         bit 1 → Etat du bouton C (0: appuyé ; 1: relâché)
    •         bit 2 et 3 → 2 bit de poids faible de la valeur de l’accéléromètre en X (bit 1 et 0)
    •         bit 4 et 5 → 2 bit de poids faible de la valeur de l’accéléromètre en Y (bit 1 et 0)
    •         bit 6 et 7 → 2 bit de poids faible de la valeur de l’accéléromètre en Z (bit 1 et 0)

 

Essai de la télécommande Nunchuk

Vous allez essayer le programme présent dans le fichier : test_NUNCHUK.txt

1. Copiez ce programme dans le programme Arduino Sketch. Essayez ce programme (on visualise les donner dans la console « moniteur série » (menu « outils).

2. Essayez de voir ce qui se passe quand on fait toutes les actions possibles sur la manette.


Comme par la suite on ne va utiliser que le joystick, on va travailler sur la partie du programme le concernant.
3. Relevez dans le programme le nom des variables des valeurs de position du joystick.


4. Faites des essais et relevez les différentes positions (x,y) de la manette (compléter ci dessous)

Position
( x , y ) (….. , …..) (….. , …..) (….. , …..) (….. , …..) (….. , …..)

Position
( x , y ) (….. , …..) (….. , …..) (….. , …..) (….. , …..)

En résumé :  compléter les valeurs sur le déplacement sur l'axe des x :   

position
valeur ..... ..... .....

 

En résumé :  compléter les valeurs sur le déplacement sur l'axe des y :  

position valeur

.....
.....
.....

 

5. Compléter les phrases suivantes :

  • La marche avant va donc est validée par la position y entre ……….   et  ……….
  • La marche arrière va donc est validée par la position y entre ……….   et  ……….
  • On tourne à droite quand la position x est entre ……….   et  ……….
  • On tourne à gauche quand la position x est entre ……….   et  ……….

 

 

Application avec notre véhicule à chenilles

Maintenant vous allez intégrer la gestion de la télécommande nunchuk à votre programme de gestion du véhicule à chenilles de telle sorte que celui-ci soit commandé par le joystick de la télécommande (marche avant, marche arrière, tourner, vitesses proportionnelles à la position du joystick,  …). Il peut être intéressant d'utiliser la fonction Arduino MAP() pour calculer la vitesse en fonction de la position de la manette.

Etape 1 : différents modes d'action

6. Il y a 9 modes d'actions possibles suivant la position de la manette : compléter le graphe ci-dessous

marche avant
         ................... Tourner à droite en avançant 
...................                 Tourner à droite (surplace)
         ................... ..........................
..........................

Etape 2 : quand lancer ces différents modes d'action ?

Il faut donc savoir laquelle de ces actions on doit faire.

7. Complétez les conditions manquantes

Arrêt :         120<joy_x_axis<140 et  120<joy_y_axis<140

Marche avant :    120<joy_x_axis<140 et  joy_y_axis>140

Tourner à droite en avançant :    ………………………………………………

Tourner à droite (surplace) :    ………………………………………………

…………………………….. :    ………………………………………………

…………………………….. :    ………………………………………………

…………………………….. :    ………………………………………………

…………………………….. :    ………………………………………………

…………………………….. :    ………………………………………………



Etape 3 : écriture en langage Arduino

Pour l'arrêt :        

if (joy_x_axis>120)         
          {  
            if (joy_x_axis<140)
            {
              if (joy_y_axis>120)
              {
                if (joy_y_axis<140)
                 {
                     ARRET

                                               

    

ou      if (joy_x_axis>120 && joy_x_axis<140 && ….)

Remarque : la fonction logique ET est possible avec Arduino à condition de l'écrire : &&


8. Modifiez le programme et essayer. Quand tout fonctionne, Faites valider par le professeur.