m5stack-encoder-motor-position-control.ino
Commande de positionnement absolu pour des applications robotiques ou de précision.
Le code configure l'unité en mode positionnement absolu. Il envoie une valeur cible (ici 1000) au registre de position. Le STM32G031 utilise les impulsions de l'encodeur pour arrêter le moteur à la position exacte. Les bits de la position sont envoyés en little-endian. Assurez-vous de calibrer la position zéro avant utilisation.
m5stack-encoder-motor-position-control.ino
#include <Wire.h>
#define I2C_ADDRESS 0x2F
#define REG_TARGET_POSITION 0x0D // Registre position cible (32-bit split usually)
#define REG_MODE 0x00
void setup() {
Serial.begin(115200);
Wire.begin();
// Activer mode position
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(REG_MODE);
Wire.write(0x02); // Mode Position
Wire.endTransmission();
}
void loop() {
// Déplacer vers position 1000
movePosition(1000);
delay(2000);
// Déplacer vers position 0
movePosition(0);
delay(2000);
}
void movePosition(int32_t pos) {
// Écriture de la position cible (exemple simplifié, vérifier format datasheet)
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(REG_TARGET_POSITION);
Wire.write(pos & 0xFF);
Wire.write((pos >> 8) & 0xFF);
Wire.write((pos >> 16) & 0xFF);
Wire.write((pos >> 24) & 0xFF);
Wire.endTransmission();
// Attendre que le moteur arrive à position (nécessite lecture registre status)
delay(1000);
}