i2c_basic_motor_control.py

Unit 4-Encoder Motor Driver (DRV8837DSGR) · File : i2c_basic_motor_control.py · Language : Python · Use case : Initialisation basique et démarrage d'un moteur sur le canal 1 via I2C.

Minimal example to communicate with the module via I2C on Linux (Raspberry Pi) to control a single motor.

Uses the smbus library. Verify the I2C address (0x24) with i2cdetect. Control registers depend on the specific card firmware; this structure is a template to be adapted to the exact registers in the datasheet.

i2c_basic_motor_control.py

import smbus
import time

# Adresse I2C par défaut du module
ADDR = 0x24
bus = smbus.SMBus(1)

# Registre de contrôle du moteur 1 (Exemple simplifié basé sur la doc technique standard M5Stack)
# Note : Les registres exacts peuvent varier selon le firmware, consulter la doc officielle
REG_MOTOR1_CTRL = 0x01

# Valeur de vitesse (0-255) et direction
# 0x00: Stop, 0x01: Forward, 0x02: Backward
# Pour ce pilote, souvent une valeur signée ou un registre vitesse + registre direction
# Exemple générique : Écrire une vitesse positive
try:
    # Activer le moteur 1 en marche avant à 50% de puissance
    # Hypothèse registre : Bit 7: En, Bits 6-0: PWM
    bus.write_byte_data(ADDR, REG_MOTOR1_CTRL, 0x80 | 128)
    print("Moteur 1 démarré en marche avant")
    time.sleep(2)
    
    # Arrêt d'urgence
    bus.write_byte_data(ADDR, REG_MOTOR1_CTRL, 0x00)
    print("Moteur 1 arrêté")
except Exception as e:
    print(f"Erreur I2C : {e}")

← Back to the board