🛠 Descubriendo E/S: LED RGB y lectura de encoders

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.

Objetivos

Este tutorial tiene como objetivo comprender cómo el módulo 4-Encoder Motor Driver se comunica con un microcontrolador anfitrión a través del bus I2C. Exploraremos dos aspectos fundamentales de las E/S: salida (control del LED RGB WS2812C integrado para retroalimentación visual) y entrada (lectura de pulsos del encoder para retroalimentación de posición). Este módulo es ideal para principiantes ya que centraliza la complejidad del control del motor, permitiendo centrarse en la lógica de comunicación.

Material Necesario

Pasos

  1. Conexión física: Conecte el módulo a la placa M5Stack mediante un cable Grove. Asegúrese de que el conector coincida con los pines I2C (SDA/SCL). Alimente el módulo ya sea a través del puerto Grove (5V) o a través de la entrada DC externa si sus motores requieren más potencia (6-12V).
  1. Configuración del código: Incluya las bibliotecas necesarias. El módulo utiliza la dirección I2C predeterminada 0x24.
#include <Wire.h>
#include "M5StackUnit4EncoderMotorDriver.h"

M5StackUnit4EncoderMotorDriver motorDriver;

void setup() {
  M5.begin();
  Wire.begin();
  // Inicializar el módulo
  motorDriver.init();
  // Establecer el LED RGB en rojo para indicar el inicio
  motorDriver.setRgbColor(255, 0, 0);
}
  1. Lectura de encoders: En el bucle principal, lea la posición actual del motor conectado al canal 1. Los encoders proporcionan pulsos que el módulo convierte en posición numérica.
void loop() {
  // Leer posición del Motor 1
  int32_t position = motorDriver.getEncoderPosition(1);
  
  // Mostrar en el terminal serie
  Serial.printf("Posición Motor 1: %ld\n", position);
  
  // Cambiar el color del LED según la posición (ejemplo simple)
  if (position > 100) {
    motorDriver.setRgbColor(0, 255, 0); // Verde
  } else {
    motorDriver.setRgbColor(0, 0, 255); // Azul
  }
  
  delay(100);
}
  1. Subida: Compile y suba el código a su placa M5Stack. Abra el Monitor Serie a 115200 baudios.

Verificación

Observe el LED RGB en el módulo. Debe encenderse en rojo al iniciar, luego cambiar de color (verde o azul) según la posición del encoder. Si gira manualmente el eje del motor, los valores mostrados en el Monitor Serie deben cambiar. Si el LED no se enciende, verifique la fuente de alimentación y la dirección I2C (0x24). Si los valores no cambian, verifique la conexión del motor de 6 hilos (motor + encoder).

Para ir más allá

Una vez dominada la lectura, explore los modos de control en bucle cerrado. El módulo permite establecer una velocidad objetivo o una posición objetivo, y maneja automáticamente la regulación PID. Intente usar la función setTargetPosition para mover el motor a una posición precisa sin gestionar los cálculos manualmente.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales