Wie verwende ich das M5Stack-Einheitenpuzzle?
Was ist Unit Puzzle?
Vor kurzem hat M5Stack ein neues Produkt namens Unit Puzzle auf den Markt gebracht. Unit Puzzle ist eine mehrfarbige Lichtsteuereinheit, die aus einem 8x8 RGB-Array bestehend aus 64 WS2812E RGB-LEDs besteht.
M5Stack ATOM Echo
Produkt anzeigenIch habe es zum ersten Mal auf einer MakerFaire-Show wie dieser gesehen:
Das macht mich glücklich, Sie wissen, dass wir LED sehr mögen, also habe ich sofort ein 10-Einheiten-Puzzle bekommen. Lass uns etwas Spaß haben.
Hardware-Anschluss
Was den Mikrocontroller angeht, ihr wisst, was mir am besten gefällt. Genau, M5Stack ATOM Lite.
M5Stack ATOM Lite
Produkt anzeigenUnd zur Einheit gehörten ein Einheitspuzzle, ein Stecker und ein Grove-Kabel. Das heißt, wir können alle Einheiten zusammenfügen.
Lassen Sie uns sie zusammenfügen.
Codeteil
Erste 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)); // Setzt das Pixel an der angegebenen Position auf Rot } } } pixels.show();
Adafruit_NeoPixel Pixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Erste Show
Sehr perfektes Display, aber jedes Pixel 0 leuchtete. Zu seltsam, es sollte zur Positionierung verwendet werden. Macht nichts, schalten wir es aus.
Zweite 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));
Zweite Show
Schön
Andere 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 };
Zusammenfassung
Unit Puzzle ist eine lustige Neopixel-LED-Matrix. Es macht mich den ganzen Tag glücklich.
Habt ihr noch andere unterhaltsame Spielmöglichkeiten? Lasst es uns gemeinsam teilen.
Hinterlasse einen Kommentar
Alle Blog-Kommentare werden vor der Veröffentlichung geprüft