m5stack-encoder-motor-pwm-control.ino
Pilotage en boucle ouverte de la vitesse du moteur via écriture I2C directe.
Cet exemple montre comment envoyer des commandes de vitesse basiques. Il utilise une adresse de registre hypothétique (0x0A) pour illustrer la logique ; référez-vous à la datasheet M5Stack pour les registres exacts. Le code fait varier la vitesse de 0 à 255 puis inverse. Le DRV8837DSGR gère le PWM interne. Une alimentation externe est requise pour le moteur.
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();
}