saltar al contenido

+49 1626571232

info@openelab.io

🚀 Envío gratuito a partir de 50€ en la UE / 80€ en todo el mundo

¿Cómo utilizar el rompecabezas de la unidad M5Stack?

20 Nov 2024 0 Comentarios

¿Qué es Unit Puzzle?

Recientemente, M5Stack lanzó un nuevo producto llamado Unit Puzzle. Unit Puzzle es una unidad de control de luz multicolor que consta de una matriz RGB de 8x8 formada por 64 LED RGB WS2812E.

M5Stack ATOM Echo

Eco ATOM de M5Stack

Ver el producto
 

Lo vi por primera vez en una feria MakerFaire como esta:

Eso me hace feliz, sabes que nos gusta mucho el LED, así que conseguí un rompecabezas de 10 unidades de inmediato. Divirtámonos un poco.

  

Conexión de hardware

Sobre el microcontrolador, ustedes saben cuál es mi favorito. Así es, M5Stack ATOM Lite.

M5Stack ATOM Lite

M5Stack ATOM Lite

Ver el producto
 

Y la unidad incluía un rompecabezas unitario, un conector, un cable Grove. Eso significa que podemos juntar todas las unidades.

Vamos a ponerlos juntos.
Atrás

 

Parte del código

Primera versión

//The unit puzzle used WS2812E, which means Adafruit_NeoPixel library is our best choice
#include 

//And define part:
#define PIN 26
#define NUMPIXELS 512
//The official recommendation for long-term lighting is 10% brightness, so we use 25
#define BRIGHTNESS 25 // Brightness range(0-255)

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


//I need display letters 'OPENELAB'
int letters[8][64] = {
  {30, 38, 21, 45, 20, 44, 19, 43, 18, 42, 17, 41, 24, 32}, // "O"
  {22, 30, 38, 46, 21, 45, 20, 44, 19, 27, 35, 43, 18, 17, 16}, // "P"
  {22, 30, 38, 46, 21, 20, 19, 27, 35, 43, 18, 17, 16, 24, 32, 40}, // "E"
  {22, 46, 21, 45, 20, 28, 44, 19, 27, 35, 43, 18, 34, 42, 17, 41, 16, 40}, // "N"
  {22, 30, 38, 46, 21, 20, 19, 27, 35, 43, 18, 17, 16, 24, 32, 40}, // "E"
  {22, 21, 20, 19, 18, 17, 16, 24, 32, 40}, // "L"
  {30, 38, 21, 45, 20, 44, 19, 27, 35, 43, 18, 42, 17, 41, 16, 40}, // "A"
  {22, 30, 38, 21, 45, 20, 36, 19, 27, 18, 34, 17, 41, 16, 24, 32} // "B"
};

//Initialize the NeoPixel library, set the brightness, turn off all pixels, call the function that displays text, and then loop empty

void setup() {
  pixels.begin();
  pixels.setBrightness(BRIGHTNESS);
  pixels.show();
  displayText();
}

void loop() {
}

// Clear all lamp beads
void displayText() {
  pixels.clear();

// Set the position of the lamp beads to display each character
  for (int charIndex = 0; charIndex < 8; charIndex++) {
    for (int i = 0; i < 64; i++) {
      if (letters[charIndex][i] != -1) {
        int pixelIndex = charIndex * 64 + letters[charIndex][i];
        píxeles.setPixelColor(pixelIndex, píxeles.Color(255, 0, 0)); // Establece el píxel en la posición especificada en rojo
      }
    }
  }

  píxeles.mostrar();

✔ ¡Copiado!
 
Píxeles de Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Esta parte es divertida. Utilicé Excel para ayudarme a hacer esto. Cuando la unidad del rompecabezas está conectada, las cuentas de su lámpara están numeradas así:
 

Primer espectáculo

Pantalla muy perfecta, pero cada píxel 0 se iluminó. Demasiado extraño, debería usarse para posicionamiento. No importa, apaguémoslo.

 

Segunda versión

Necesito desactivar el píxel 0 y darle a las letras diferentes colores.
// In the define section, increase the color cycle time by 0.5 seconds
#define COLOR_CHANGE_INTERVAL 500

// Define the character part to add characters to display red, green and blue in three colors
int letters[8][64] = {
  {30, 38, 21, 45, 20, 44, 19, 43, 18, 42, 17, 41, 24, 32}, // "O"
  {22, 30, 38, 46, 21, 45, 20, 44, 19, 27, 35, 43, 18, 17, 16}, // "P"
  {22, 30, 38, 46, 21, 20, 19, 27, 35, 43, 18, 17, 16, 24, 32, 40}, // "E"
  {22, 46, 21, 45, 20, 28, 44, 19, 27, 35, 43, 18, 34, 42, 17, 41, 16, 40}, // "N"
  {22, 30, 38, 46, 21, 20, 19, 27, 35, 43, 18, 17, 16, 24, 32, 40}, // "E"
  {22, 21, 20, 19, 18, 17, 16, 24, 32, 40}, // "L"
  {30, 38, 21, 45, 20, 44, 19, 27, 35, 43, 18, 42, 17, 41, 16, 40}, // "A"
  {22, 30, 38, 21, 45, 20, 36, 19, 27, 18, 34, 17, 41, 16, 24, 32} // "B"
};

unsigned long lastColorChangeTime = 0;
int currentColorIndex = 0;
uint32_t colors[3] = {pixels.Color(255, 0, 0), pixels.Color(0, 255, 0), pixels.Color(0, 0, 255)};

// Add switching colors in the loop
void loop() {
  unsigned long currentTime = millis();
  if (currentTime - lastColorChangeTime >= COLOR_CHANGE_INTERVAL) {
    lastColorChangeTime = currentTime;
    displayText(); 
    currentColorIndex = (currentColorIndex + 1) % 3; 
  }
}

  // Make sure the first lamp bead (pixel 0) of all matrices is off
  for (int charIndex = 0; charIndex < 8; charIndex++) {
    int firstPixelIndex = charIndex * 64;
    if (firstPixelIndex < NUMPIXELS) {
      pixels.setPixelColor(firstPixelIndex, pixels.Color(0, 0, 0));

✔ ¡Copiado!
  
 

Segundo espectáculo

Hermoso

 

Otra versión

  // Define the color corresponding to each character
  uint32_t characterColors[8] = {
    pixels.Color(255, 0, 0), // "O" - Red
    pixels.Color(0, 255, 0), // "P" - Green
    pixels.Color(0, 0, 255), // "E" - Blue
    pixels.Color(255, 255, 0), // "N" - Yellow
    pixels.Color(0, 255, 255), // "E" - Light blue
    pixels.Color(255, 0, 255), // "L" - Magenta
    pixels.Color(255, 128, 0), // "A" - Orange
    pixels.Color(128, 0, 128) // "B" - Purple
  };

✔ ¡Copiado!
 
 

Resumen

Unit Puzzle es una divertida matriz LED de neopíxeles. Me hace feliz todo el día.

¿Tienes otras formas divertidas de jugar? Compartámoslo juntos.

Publicación anterior
Siguiente publicación

Deja un comentario

Todos los comentarios del blog se revisan antes de publicarlos.

Alguien compró recientemente un

¡Gracias por suscribirte!

¡Este correo electrónico ha sido registrado!

Compra el look

Elija opciones

Editar opción
Notificación de nuevo disponible
this is just a warning
Acceso
Carro de la compra
0 elementos
RuffRuff App RuffRuff App by Tsun