top of page

LE MODULE MINI TRACK BALL

Le module mini track ball comporte un joystick à bille associé à deux circuits intégrés, le STM32F103C8T6 et le AN48841B. Ce module délivre 5 informations (haut, bas, gauche, droite et clic) en fonction de la direction et la vitesse de déplacement de la bille.

Ce module doit être relié à un connecteur I2C de la base.

Un programme de test fourni pour Seeedstudio est téléchargeable ici. Nous nous appuierons sur ce programme pour réaliser l'exemple ci-dessous.

Exemple :

Nous souhaitons afficher sur le moniteur série les 5 valeurs du mini track ball.

Câblage :

Module "Grove"

Module mini track ball

Connecteur Base

I2C

Programme :

/* Mini track ball est un programme qui affiche dans le moniteur série les 5 valeurs du mini track ball */

#include <Wire.h>                              // appel de la bibliothèque

/*---------------------------------------------------------------------------------------//
 * define the default data
 */
#define ReadMode 0
#define WriteMode 1
#define DeAddr 0X4A
#define ConfigValid 0x3a6fb67c


/*---------------------------------------------------------------------------------------//
 * define the enum type for Register
 */
enum MOTION_REG_ADDR
{
  MOTION_REG_UP = 0X00,
  MOTION_REG_DOWN,
  MOTION_REG_LEFT,
  MOTION_REG_RIGHT,
  MOTION_REG_CONFIRM,
  MOTION_REG_NUM
};


 uint8_t ReadByte(uint8_t Reg)
 {
    Wire.beginTransmission(DeAddr);
    Wire.write(ReadMode);
    Wire.write(Reg);
    Wire.write(1);
    Wire.endTransmission();
    Wire.requestFrom(DeAddr, 1);  
    return Wire.read();
 }


void test_PrintTrackData(void)
{
  for(int i=0;i<500;i++)
  {
    Serial.print(ReadByte(MOTION_REG_UP));                      // affichage de la valeur "haut"
    Serial.print("-");
    Serial.print(ReadByte(MOTION_REG_DOWN));                // affichage de la valeur "bas"
    Serial.print("-");
    Serial.print(ReadByte(MOTION_REG_LEFT));                  // affichage de la valeur "gauche"
    Serial.print("-");
    Serial.print(ReadByte(MOTION_REG_RIGHT));               // affichage de la valeur "droite"
    Serial.print("-");
    Serial.println(ReadByte(MOTION_REG_CONFIRM));      // affichage de la valeur "clic"
    delay(100);
  }
}


void setup()
{
 Wire.begin();                                                // initialisation de la liaison I2C
 Serial.begin(115200);                                // initialisation du moniteur série
}

void loop()
{
 test_PrintTrackData();
 delay(500);
}

 

bottom of page