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.
Liste du matériel :
-
1 base RIP
-
1 module mini track ball "Grove" avec support RIP
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);
}