i2c_basic_motor_control.py
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}")