Comment utiliser le puzzle d'unité M5Stack ?
Qu'est-ce que Unit Puzzle ?
Récemment, M5Stack a lancé un nouveau produit appelé Unit Puzzle. Unit Puzzle est une unité de contrôle de lumière multicolore composée d'un réseau RVB 8x8 composé de 64 LED RVB WS2812E.
Je l'ai vu pour la première fois lors d'un salon MakerFaire comme celui-ci :
Cela me fait plaisir, vous savez que nous aimons beaucoup les LED, alors j'ai immédiatement reçu un puzzle de 10 unités. Amusons-nous un peu.
Connexion du matériel
À propos du microcontrôleur, vous savez quel est mon préféré. C'est vrai, M5Stack ATOM Lite.
Et l'unité comprenait un puzzle d'unité, un connecteur, un câble Grove. Cela signifie que nous pouvons rassembler toutes les unités.
Mettons-les ensemble.
Partie du code
Première 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)); // Définit le pixel à la position spécifiée sur rouge } } } pixels.afficher();
Adafruit_NeoPixel pixels (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800) ;
Premier spectacle
Affichage très parfait, mais chaque pixel 0 s'éclaire. Trop bizarre, il devrait servir au positionnement. Peu importe, éteignons-le.
Deuxième version
// 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));
Deuxième spectacle
Beau
Autre 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 };
Résumé
Unit Puzzle est une matrice LED néopixel amusante. Cela me rend heureux toute la journée.
Avez-vous d'autres façons amusantes de jouer ? Partageons-le ensemble.