Primeros pasos con la R3 JUN UNO: Crea direccionales LED controladas por movimiento

Banner-para-EN162-Primeros pasos con la R3 JUN UNO

Resumen

En este proyecto combinaremos la R3 JUN UNO Unit DevLab, una tarjeta de desarrollo compatible con el formato UNO que incorpora una matriz NeoPixel de 5×5, múltiples interfaces de comunicación y conectores JST/Qwiic, con el BMA255 Sensor Acelerómetro 3 Ejes I2C Ultra-Low Power UNIT DevLab, un sensor de bajo consumo capaz de detectar movimientos, inclinaciones y vibraciones en los ejes X, Y y Z.
En este proyecto se utilizará la R3 JUN UNO Unit DevLab junto con el BMA255 Sensor Acelerómetro 3 Ejes I2C Ultra-Low Power UNIT DevLab para crear un sistema interactivo capaz de detectar la inclinación del acelerómetro y responder mediante la matriz LED RGB integrada en la tarjeta.

Introducción

¿Que es la R3 JUN UNO Unit DevLab ?
La R3 JUN UNO es una tarjeta de desarrollo versátil y modular basada en el microcontrolador ATmega328P, compatible con el factor de forma estilo UNO.

La JUN R3 trabaja a un voltaje de 5V desde USB-Tipo C y vía jack DC entre 7 y 20V, teniendo una tolerancia hasta 2A. Incluye una matriz neopixel de 5×5 RGB (WS2812B), conector JST 1 mm para poder realizar la conexión entre otros módulos puede ser vía header o por conectores Qwiic, para poder tener comunicación vía I2C, además de UART ,SPI , con capacidades de entradas/salida analógica y digital.

El BMA255 Sensor Acelerómetro 3 Ejes I2C Ultra-Low Power UNIT DevLab trabaja a un voltaje de 3.3 V y utiliza comunicación I2C, permitiendo medir la aceleración en los ejes X, Y y Z con un consumo de energía muy bajo. Ideal para aplicaciones de detección de movimiento, inclinación, vibración y orientación.

Especificaciones

R3 JUN UNO- UNIT DevLab

BMA255 Sensor Acelerometro 3 Ejes I2C Ultra-Low Power – UNIT DevLab

Materiales

Diagrama de Conexión

Requerimientos Previos

Para comenzar a utilizar nuestra R3 JUN UNO UNIT- DevLab debemos tener instalado el driver CH340.

Es necesario instalar la libreria Adafruit Neopixel, para instalarla :
Ve a Programa > Incluir librería > Gestionar bibliotecas…
En el buscador escribe: Adafruit Neopixel
Instala la librería Adafruit Neopixel (normalmente aparece como “Adafruit Neopixel by Adafruit”).

Realizar la siguiente selección de tarjeta dentro del IDE de ARDUINO

Para nuestro BMA255 Sensor Acelerometro requeriremos la librería UBMA250 (normalmente aparece como “UBMA250 by Cesar Bautista”) ,en el IDE de Arduino.

Código

#include <Wire.h>
#include "BMA250.h"
#include <Adafruit_NeoPixel.h>

// ==========================
// MATRIZ LED
// ==========================
#define PIN 8
#define NUM_LEDS 25
#define WIDTH 5
#define HEIGHT 5
// se inicializa la libreria
Adafruit_NeoPixel strip(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

// ==========================
// SENSOR BMA250/255
// ==========================
UBMA250 accel_sensor;

// ==========================
// MAPEO XY (Serpentina)
// ==========================
int XY(int x, int y) {
  if (y % 2 == 0) {
    return y * WIDTH + x;
  } else {
    return y * WIDTH + (WIDTH - 1 - x);
  }
}

// ==========================
// EFECTO CASCADA
// ==========================
void cascade(uint32_t color) {
  // ENCENDER
  for (int y = 0; y < HEIGHT; y++) {
    for (int x = 0; x < WIDTH; x++) {
      strip.setPixelColor(XY(x, y), color);
      strip.show();
      delay(15);
    }
  }

  // APAGAR
  for (int y = 0; y < HEIGHT; y++) {
    for (int x = 0; x < WIDTH; x++) {
      strip.setPixelColor(XY(x, y), 0);
      strip.show();
      delay(10);
    }
  }
}

// ==========================
// SETUP
// ==========================
void setup() {
  Serial.begin(115200);
  
  // 1. Inicializar el bus I2C (Para el UNO/Qwiic, lo dejamos vacío)
  Wire.begin(); 

  // 2. Inicializar Matriz LED
  strip.begin();
  strip.setBrightness(40);
  strip.show();

  // 3. Inicializar BMA250 con los parámetros de la librería
  Serial.println("Inicializando BMA250 vía Qwiic...");
  int result = accel_sensor.begin(BMA250_range_2g, BMA250_update_time_64ms);
  
  if (result == 0) {
    Serial.println("¡Sensor inicializado con éxito!");
  } else {
    Serial.println("¡Fallo! No se detectó el sensor. Revisa el cable Qwiic.");
    while (1); // Detener si no hay sensor
  }
}

// ==========================
// LOOP
// ==========================
void loop() {
  // 1. Leer los datos frescos del sensor
  accel_sensor.read();

  // 2. Extraer los valores crudos enteros (X, Y, Z)
  int x = accel_sensor.X;
  int y = accel_sensor.Y;
  int z = accel_sensor.Z;

  // Evitar procesar si la librería devuelve el error de desconexión
  if (x == -1 && y == -1 && z == -1) {
    Serial.println("¡Error de lectura! Sensor desconectado.");
    delay(500);
    return; // Reinicia el ciclo loop
  }

  // ==========================
  // MONITOR SERIAL
  // ==========================
  Serial.print("X: "); Serial.print(x);
  Serial.print("  Y: "); Serial.print(y);
  Serial.print("  Z: "); Serial.println(z);

  // ==========================
  // LÓGICA DE DIRECCIONES
  // ==========================
  // Cambiamos el umbral a 150 porque estamos leyendo valores RAW (crudos) 
  // de 10 bits en lugar de metros por segundo.
  int umbral = 150; 

  if (x > umbral) {
    cascade(strip.Color(0, 0, 255)); // DERECHA = AZUL
  } 
  else if (x < -umbral) {
    cascade(strip.Color(255, 0, 0)); // IZQUIERDA = ROJO
  } 
  else if (y > umbral) {
    cascade(strip.Color(0, 255, 0)); // ARRIBA = VERDE
  } 
  else if (y < -umbral) {
    cascade(strip.Color(180, 0, 255)); // ABAJO = MORADO
  }

  delay(50);
}

Demostración

Conclusión

La R3 JUN UNO Unit DevLab y el BMA255 Sensor Acelerómetro 3 Ejes I2C Ultra-Low Power UNIT DevLab representan una nueva generación de módulos de desarrollo diseñados para facilitar la creación de proyectos electrónicos modernos.

El potencial de estos productos va mucho más allá de este proyecto inicial. Sus características de conectividad, compatibilidad con el ecosistema Arduino y diseño modular los convierten en una excelente base para desarrollar aplicaciones de robótica, automatización, interfaces interactivas, proyectos educativos y sistemas de monitoreo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *