Close

Iluminación de Elementos en Panel de juego II

A project log for THE ULTIMATE MINI ARCADE

Classic arcade with all the latest technological advancements, ready for the classics. Enjoy!

srrubioSrRubio 05/05/2026 at 09:170 Comments

4. Código Maestro (Explicado en el propio código)

Este código está diseñado para que definas "Zonas". Los LEDs que queden en el espacio vacío entre un botón y otro se quedarán apagados (CRGB::Black), creando la ilusión de que son tramos separados.

#include <FastLED.h>

#define LED_PIN        10
#define NUM_LEDS       60
#define BRIGHTNESS     35
#define LED_TYPE       WS2812B
#define COLOR_ORDER    GRB

CRGB leds[NUM_LEDS];


// =========================
// DEFINICIÓN DE ZONAS
// =========================

// Joystick
#define JOY_START      0
#define JOY_END        11

// Botón A
#define BTN_A_START    12
#define BTN_A_END      17

// Botón B
#define BTN_B_START    18
#define BTN_B_END      23

// Botón C
#define BTN_C_START    24
#define BTN_C_END      29

// Botón D
#define BTN_D_START    30
#define BTN_D_END      35

// Trackball
#define TRK_START      36
#define TRK_END        55


// =========================

void setup() {

  Serial.begin(115200);

  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);

  FastLED.setBrightness(BRIGHTNESS);

  apagarTodo();

  Serial.println("Sistema LED Arcade listo");
}


// =========================

void loop() {

  if (Serial.available()) {

    String cmd = Serial.readStringUntil('\n');

    cmd.trim();

    Serial.print("Comando: ");
    Serial.println(cmd);

    apagarTodo();

    // =====================================
    // JOYSTICK + 2 BOTONES
    // =====================================

    if (cmd == "J2") {

      iluminarZona(JOY_START, JOY_END, CRGB::Blue);

      iluminarZona(BTN_A_START, BTN_A_END, CRGB::Red);

      iluminarZona(BTN_B_START, BTN_B_END, CRGB::Red);
    }

    // =====================================
    // JOYSTICK + 4 BOTONES
    // =====================================

    else if (cmd == "J4") {

      iluminarZona(JOY_START, JOY_END, CRGB::Blue);

      iluminarZona(BTN_A_START, BTN_A_END, CRGB::Green);

      iluminarZona(BTN_B_START, BTN_B_END, CRGB::Green);

      iluminarZona(BTN_C_START, BTN_C_END, CRGB::Green);

      iluminarZona(BTN_D_START, BTN_D_END, CRGB::Green);
    }

    // =====================================
    // TRACKBALL
    // =====================================

    else if (cmd == "TR") {

      iluminarZona(TRK_START, TRK_END, CRGB::Purple);
    }

    // =====================================
    // APAGAR
    // =====================================

    else if (cmd == "OFF") {

      apagarTodo();
    }

    FastLED.show();
  }
}


// =========================
// FUNCIONES
// =========================

void iluminarZona(int inicio, int fin, CRGB color) {

  for (int i = inicio; i <= fin; i++) {

    leds[i] = color;
  }
}


// =========================

void apagarTodo() {

  FastLED.clear();

  FastLED.show();
}

5. Resumen de Instalación y Detalles de Éxito

  1. Cuidado Térmico: Aunque la tira COB es eficiente, 320 LEDs generan algo de calor. No la pegues con pegamento instantáneo (cianocrilato), usa su propia cinta 3M y, si es necesario, refuerza con clips impresos en 3D.
  2. Mapeo de Píxeles: Una vez pegada la tira, carga un código de "test" que encienda los LEDs de 10 en 10 para identificar visualmente en qué número de LED empieza y acaba cada botón. Es más fácil que medir con regla.
  3. Radio de Giro: La tira COB ultra estrecha es muy flexible lateralmente (puedes hacer círculos planos), pero no intentes doblarla "de canto" bruscamente.
  4. Difusión: Si la luz te parece demasiado puntual incluso siendo COB, imprime una pequeña "tapa" de 1mm de grosor en PLA Blanco sobre el canal de la tira; eso hará que la luz se vea como un neón sólido.

Un último detalle técnico: Dado que vas a usar una tira de alta densidad (160 LED/m), asegúrate de usar cables de alimentación de buen grosor (AWG20) para llevar la corriente de la fuente a la tira, así evitarás caídas de tensión.

Resumen de Conexiones con el Pro Micro

Discussions