i2c_basic_motor_control.py

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

Exemple minimal pour communiquer avec le module via I2C Linux (Raspberry Pi) pour contrôler un seul moteur.

Utilise la bibliothèque smbus. Vérifiez que l'adresse I2C (0x24) est correcte avec i2cdetect. Les registres de contrôle dépendent du firmware spécifique de la carte ; cette structure est un gabarit à adapter aux registres exacts du datasheet DRV8837/STM32.

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}")

← Retour à la fiche