🛠 Découverte des entrées-sorties : LED RGB et lecture d'encodeurs

Unit 4-Encoder Motor Driver (DRV8837DSGR) · debutant · Apprenez à interagir avec les périphériques intégrés du module en contrôlant la LED RGB et en lisant les données des encodeurs via I2C.

Objectifs

Ce tutoriel vise à comprendre comment le module 4-Encoder Motor Driver communique avec un microcontrôleur hôte via le bus I2C. Nous allons explorer deux aspects fondamentaux des entrées-sorties : la sortie (contrôle de la LED RGB WS2812C intégrée pour le feedback visuel) et l'entrée (lecture des impulsions des encodeurs pour le retour de position). Ce module est idéal pour les débutants car il centralise la complexité du pilotage moteur, permettant de se concentrer sur la logique de communication.

Matériel nécessaire

Étapes

  1. Connexion physique : Connectez le module à la carte M5Stack via un câble Grove. Assurez-vous que le connecteur correspond aux broches I2C (SDA/SCL). Alimentez le module soit via le port Grove (5V), soit via l'entrée DC externe si vos moteurs nécessitent plus de puissance (6-12V).
  1. Configuration du code : Incluez les bibliothèques nécessaires. Le module utilise l'adresse I2C par défaut 0x24.
#include <Wire.h>
#include "M5StackUnit4EncoderMotorDriver.h"

M5StackUnit4EncoderMotorDriver motorDriver;

void setup() {
  M5.begin();
  Wire.begin();
  // Initialisation du module
  motorDriver.init();
  // Réglage de la LED RGB en rouge pour indiquer le démarrage
  motorDriver.setRgbColor(255, 0, 0);
}
  1. Lecture des encodeurs : Dans la boucle principale, lisez la position actuelle du moteur connecté au canal 1. Les encodeurs fournissent des impulsions que le module convertit en position numérique.
void loop() {
  // Lecture de la position du moteur 1
  int32_t position = motorDriver.getEncoderPosition(1);
  
  // Affichage sur le terminal série
  Serial.printf("Position Moteur 1: %ld\n", position);
  
  // Changer la couleur de la LED selon la position (exemple simple)
  if (position > 100) {
    motorDriver.setRgbColor(0, 255, 0); // Vert
  } else {
    motorDriver.setRgbColor(0, 0, 255); // Bleu
  }
  
  delay(100);
}
  1. Téléversement : Compilez et téléversez le code sur votre carte M5Stack. Ouvrez le moniteur série à 115200 bauds.

Vérification

Observez la LED RGB sur le module. Elle doit s'allumer en rouge au démarrage, puis changer de couleur (vert ou bleu) en fonction de la position de l'encodeur. Si vous faites tourner manuellement l'axe du moteur, les valeurs affichées dans le moniteur série doivent changer. Si la LED ne s'allume pas, vérifiez l'alimentation et l'adresse I2C (0x24). Si les valeurs ne changent pas, vérifiez le branchement du moteur à 6 fils (moteur + encodeur).

Pour aller plus loin

Une fois la lecture maîtrisée, explorez les modes de contrôle en boucle fermée. Le module permet de définir une vitesse cible ou une position cible, et il gère automatiquement la régulation PID. Essayez d'utiliser la fonction setTargetPosition pour déplacer le moteur vers une position précise sans avoir à gérer les calculs manuellement.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels