m5stack-encoder-motor-pwm-control.ino
Control de velocidad del motor en lazo abierto mediante escritura I2C directa.
Este ejemplo muestra cómo enviar comandos básicos de velocidad. Utiliza una dirección de registro hipotética (0x0A) para ilustrar la lógica; consulte la hoja de datos de M5Stack para los registros exactos. El código varía la velocidad de 0 a 255 y luego se invierte. El DRV8837DSGR maneja el PWM interno. Se requiere una fuente de alimentación externa para el motor.
m5stack-encoder-motor-pwm-control.ino
#include <Wire.h>
#define I2C_ADDRESS 0x2F
#define REG_MOTOR_SPEED 0x0A // Exemple d'adresse registre (à vérifier selon datasheet M5Stack)
void setup() {
Serial.begin(115200);
Wire.begin();
// Mode PWM simple
// Note: Les adresses de registre spécifiques doivent être consultées dans la documentation M5Stack
// Ici on simule l'écriture d'une valeur de vitesse (0-255)
setMotorSpeed(150);
}
void loop() {
// Variation simple de la vitesse
for(int i=0; i<=255; i+=10) {
setMotorSpeed(i);
delay(100);
}
for(int i=255; i>=0; i-=10) {
setMotorSpeed(i);
delay(100);
}
}
void setMotorSpeed(uint8_t speed) {
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(REG_MOTOR_SPEED);
Wire.write(speed);
Wire.endTransmission();
}