m5stack-encoder-motor-position-control.ino
Comando de posicionamiento absoluto para aplicaciones robóticas o de precisión.
El código configura la unidad en modo de posicionamiento absoluto. Envía un valor objetivo (aquí 1000) al registro de posición. El STM32G031 utiliza los pulsos del codificador para detener el motor en la posición exacta. Los bits de la posición se envían en little-endian. Asegúrese de calibrar la posición cero antes de usar.
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);
}