m5stack-encoder-motor-pwm-control.ino

M5Stack Encoder Motor Driver Unit (DRV8837DSGR) · File : m5stack-encoder-motor-pwm-control.ino · Language : C++ (Arduino) · Use case : Contrôler la vitesse d'un moteur DC connecté à l'unité en mode PWM simple sans boucle fermée.

Open-loop motor speed control via direct I2C write.

This example shows how to send basic speed commands. It uses a hypothetical register address (0x0A) to illustrate the logic; refer to the M5Stack datasheet for exact registers. The code varies speed from 0 to 255 and then reverses. The DRV8837DSGR handles internal PWM. An external power supply is required for the 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();
}

← Back to the board