Salta al contenuto

+49 1626571232

info@openelab.io

🚀 Spedizione gratuita a partire da 50€ in UE / 80€ in tutto il mondo

Come utilizzare il puzzle dell'unità M5Stack?

20 Nov 2024 0 Commenti

Che cosa è Unit Puzzle?

Recentemente, M5Stack ha lanciato un nuovo prodotto chiamato Unit Puzzle. Unit Puzzle è un'unità di controllo della luce multicolore composta da un array RGB 8x8 composto da 64 LED RGB WS2812E.

M5Stack ATOM Echo

M5Stack ATOM Eco

Visualizza prodotto
 

L'ho visto per la prima volta a uno spettacolo MakerFaire come questo:

Questo mi rende felice, sai che ci piacciono molto i LED, quindi ho ricevuto immediatamente un puzzle da 10 unità. Divertiamoci un po'.

  

Collegamento hardware

Per quanto riguarda il microcontrollore, sapete qual è il mio preferito. Esatto, M5Stack ATOM Lite.

M5Stack ATOM Lite

M5Stack ATOM Lite

Visualizza prodotto
 

E l'unità includeva un puzzle unitario, un connettore, un cavo Grove. Ciò significa che possiamo mettere insieme tutte le unità.

Mettiamoli insieme.
Indietro

 

Parte del codice

Prima versione

//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];
        pixels.setPixelColor(pixelIndex, pixels.Color(255, 0, 0)); // Imposta il pixel nella posizione specificata su rosso
      }
    }
  }

  pixel.mostra();

✔ Copiato!
 
Adafruit_NeoPixel pixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Questa parte è divertente. Ho usato Excel per aiutarmi a fare questo. Quando l'unità puzzle è collegata, le sue sfere della lampada sono numerate in questo modo:
 

Primo spettacolo

Display molto perfetto, ma ogni pixel 0 si illuminava. Troppo strano, dovrebbe essere usato per il posizionamento. Non importa, spegniamolo.

 

Seconda versione

Devo disattivare il pixel 0, dare alle lettere colori diversi.
// 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));

✔ Copiato!
  
 

Secondo spettacolo

Bellissimo

 

Altra versione

  // 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
  };

✔ Copiato!
 
 

Riepilogo

Unit Puzzle è una divertente matrice LED neopixel. Mi rende felice tutto il giorno.

Hai altri modi divertenti per giocare? Condividiamolo insieme.

Articolo precedente
Articolo successivo

lascia un commento

Tutti i commenti del blog vengono controllati prima della pubblicazione

Qualcuno ha recentemente acquistato un

Grazie per esserti iscritto!

Questa email è stata registrata!

Acquista il look

Scegli Opzioni

Modifica opzione
Notifica di disponibilità
this is just a warning
Login
Carrello della spesa
0 elementi
RuffRuff App RuffRuff App by Tsun