m5stack-encoder-motor-closed-loop.ino
Configuración del modo PID/lazo cerrado y lectura de la velocidad real.
Este ejemplo activa el modo de control en lazo cerrado escribiendo en el registro de modo. Luego establece una velocidad objetivo y lee la velocidad actual a través del codificador integrado. Las direcciones de registro son indicativas; la biblioteca oficial de M5Stack maneja parámetros PID complejos. El codificador AB de la unidad proporciona datos de retroalimentación al STM32G031.
m5stack-encoder-motor-closed-loop.ino
#include <Wire.h>
#define I2C_ADDRESS 0x2F
#define REG_TARGET_SPEED 0x0B // Exemple registre cible
#define REG_CURRENT_SPEED 0x0C // Exemple registre lecture
void setup() {
Serial.begin(115200);
Wire.begin();
// Configurer le mode boucle fermée
// Note: Utiliser les fonctions de la bibliothèque M5Stack-Encoder-Motor-Driver si disponible
// Sinon, écriture manuelle aux registres de configuration
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(0x00); // Registre de mode
Wire.write(0x01); // Activer boucle fermée
Wire.endTransmission();
}
void loop() {
uint8_t targetSpeed = 100;
uint8_t currentSpeed = 0;
// Définir la vitesse cible
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(REG_TARGET_SPEED);
Wire.write(targetSpeed);
Wire.endTransmission();
// Lecture de la vitesse actuelle (pour debug)
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(REG_CURRENT_SPEED);
Wire.endTransmission(false);
Wire.requestFrom(I2C_ADDRESS, 1);
if(Wire.available()) {
currentSpeed = Wire.read();
Serial.print("Target: "); Serial.print(targetSpeed);
Serial.print(" Current: "); Serial.println(currentSpeed);
}
delay(500);
}