Hur använder man M5Stack Unit Puzzle?

 

Vad är Unit Puzzle?

Nyligen lanserade M5Stack en ny produkt som heter Unit Puzzle. Unit Puzzle är en mångfärgad ljusstyrningsenhet bestående av en 8x8 RGB-matris med 64 WS2812E RGB-LEDs.

M5Stack ATOM Echo

M5Stack ATOM Echo

Visa produkt
 

Jag såg det först på en MakerFaire-show som denna:

Det gör mig glad, ni vet att vi gillar LED väldigt mycket, så jag skaffade genast 10 enheter av pusslet. Låt oss ha lite kul.

  

Hårdvaruanslutning

När det gäller mikrokontrollern vet ni vad min favorit är. Det stämmer, M5Stack ATOM Lite.

M5Stack ATOM Lite

M5Stack ATOM Lite

Visa produkt
 

Och enheten inkluderade en unit puzzle, en kontakt, en Grove-kabel. Det betyder att vi kan sätta ihop alla enheter.

Låt oss sätta ihop dem.
Tillbaka

 

Koddel

Första version

//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)); // Sets the pixel at the specified position to red
      }
    }
  }

  pixels.show();

✔ Kopierat!


 
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Den här delen är rolig. Jag använde Excel för att hjälpa mig göra detta. När unit puzzle är ansluten är dess lamppärlor numrerade så här:

 

Första visning

Mycket perfekt display, men varje pixel 0 var tänd. För konstigt, den borde användas för positionering. Okej, låt oss stänga av den.

 

Andra version

Jag behöver stänga av pixel 0, ge bokstäverna olika färger.
// 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));

✔ Kopierat!
  
 

Andra visning

Vacker

 

Annan version

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

✔ Kopierat!
 
 

Sammanfattning

Unit Puzzle är en rolig neopixel LED-matris. Den gör mig glad hela dagen.

Har du några andra roliga sätt att leka på? Låt oss dela dem tillsammans.




 

Sidopanel

Senaste inlägg

Denna sektion innehåller för närvarande inget innehåll. Lägg till innehåll i denna sektion med hjälp av sidofältet.

Registrera dig för vårt nyhetsbrev

Få den senaste informationen om våra produkter och specialerbjudanden.