🛠 Descubriendo E/S: LED RGB y lectura de encoders
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
- Una placa M5Stack (Core2, StickC+ o similar) con la biblioteca M5Stack instalada.
- El módulo Unit 4-Encoder Motor Driver (DRV8837DSGR).
- Cables Grove HY2.0-4P.
- Un motor con engranajes y encoder (conectado al puerto de motor 1).
- Ordenador con Arduino IDE.
Pasos
- 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).
- 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);
}
- 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);
}
- 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
- Primer Conexión y Puesta en Marcha del Driver Motor 4-Encoder
- Automatiza un chasis robótico con el Driver 4-Encoder
- Primera conexión y puesta en marcha del 4-Encoder Motor Driver
- Control de GPIO y LED RGB en el Driver Motor 4-Encoders
- Automatización en Bucle Cerrado con Driver 4-Encoder
- Primer cableado e inicialización del módulo 4-Encoder Motor Driver
Ejemplos de código para esta placa
i2c-motor-spin.inoarduinoclosed-loop-speed-control.inoarduinorelative-position-move.inoarduinorgb-led-status-indicator.inoarduinodifferential-drive-robot.inoarduinoi2c_basic_motor_control.pyPython