This video showcases the 16x16 LED RGB matrix. It covers all the technical details and provides a wiring example. In the end you get two different code examples to learn how to use the panel.
You can get the panel here:
Wiring diagram:
Code example 1:
// Adafruit_NeoMatrix example for single NeoPixel Shield. // Scrolls 'Howdy' across the matrix in a portrait (vertical) orientation. #include <Adafruit_GFX.h> #include <Adafruit_NeoMatrix.h> #include <Adafruit_NeoPixel.h> #ifndef PSTR #define PSTR // Make Arduino Due happy #endif #define PIN 16 // MATRIX DECLARATION: // Parameter 1 = width of NeoPixel matrix // Parameter 2 = height of matrix // Parameter 3 = pin number (most are valid) // Parameter 4 = matrix layout flags, add together as needed: // NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT: // Position of the FIRST LED in the matrix; pick two, e.g. // NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner. // NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal // rows or in vertical columns, respectively; pick one or the other. // NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed // in the same order, or alternate lines reverse direction; pick one. // See example below for these values in action. // Parameter 5 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_GRBW Pixels are wired for GRBW bitstream (RGB+W NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // Example for NeoPixel Shield. In this application we'd like to use it // as a 5x8 tall matrix, with the USB port positioned at the top of the // Arduino. When held that way, the first pixel is at the top right, and // lines are arranged in columns, progressive order. The shield uses // 800 KHz (v2) pixels that expect GRB color data. Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(16, 16, PIN, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800); const uint16_t colors[] = { matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) }; void setup() { matrix.begin(); matrix.setTextWrap(false); matrix.setBrightness(40); matrix.setTextColor(colors[0]); matrix.setTextSize(1); } int x = matrix.width(); int pass = 0; void loop() { matrix.fillScreen(0); matrix.setCursor(x, 0); matrix.print(F("AZ-Delivery")); if(--x < -72) { x = matrix.width(); if(++pass >= 3) pass = 0; matrix.setTextColor(colors[pass]); } matrix.show(); delay(100); }
Code bitcoin price:
// Adafruit_NeoMatrix example for single NeoPixel Shield. // Scrolls 'Howdy' across the matrix in a portrait (vertical) orientation. #include <Adafruit_GFX.h> #include <Adafruit_NeoMatrix.h> #include <Adafruit_NeoPixel.h> #include "credentials.h" #include <ArduinoJson.h> #include <WiFi.h> #include <HTTPClient.h> // search for crypto apis String serverName = "https://api.replacemewithyourfavoriteapi.com/price?ids=bitcoin%2Cdogecoin&vs_currencies=eur"; unsigned long previousMillis = 0; float value_bitcoin = 0; float value_dogecoin = 0; #ifndef PSTR #define PSTR // Make Arduino Due happy #endif #define PIN 16 // MATRIX DECLARATION: // Parameter 1 = width of NeoPixel matrix // Parameter 2 = height of matrix // Parameter 3 = pin number (most are valid) // Parameter 4 = matrix layout flags, add together as needed: // NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT: // Position of the FIRST LED in the matrix; pick two, e.g. // NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner. // NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal // rows or in vertical columns, respectively; pick one or the other. // NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed // in the same order, or alternate lines reverse direction; pick one. // See example below for these values in action. // Parameter 5 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_GRBW Pixels are wired for GRBW bitstream (RGB+W NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // Example for NeoPixel Shield. In this application we'd like to use it // as a 5x8 tall matrix, with the USB port positioned at the top of the // Arduino. When held that way, the first pixel is at the top right, and // lines are arranged in columns, progressive order. The shield uses // 800 KHz (v2) pixels that expect GRB color data. Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(16, 16, PIN, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800); const uint16_t colors[] = { matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255), matrix.Color(255, 165, 0)}; void connectAP() { Serial.println("Connecting to WiFi.."); WiFi.begin(ssid, password); int cnt = 0; while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); cnt++; if (cnt > 20) ESP.restart(); } Serial.println(WiFi.localIP()); } int x = matrix.width(); int pass = 0; void getCryptoData() { if (WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin(serverName.c_str()); int httpResponseCode = http.GET(); if (httpResponseCode > 0) { Serial.print("HTTP Response code: "); Serial.println(httpResponseCode); String payload = http.getString(); // Serial.println(payload); // JSON Output from https://arduinojson.org/v6/assistant StaticJsonDocument<96> doc; DeserializationError error = deserializeJson(doc, payload); if (error) { Serial.print("deserializeJson() failed: "); Serial.println(error.c_str()); return; } value_bitcoin = doc["bitcoin"]["eur"]; value_dogecoin = doc["dogecoin"]["eur"]; Serial.println(value_bitcoin); Serial.println(value_dogecoin); } else { Serial.print("Error code: "); Serial.println(httpResponseCode); } http.end(); } else { Serial.println("Reconnect to AP"); connectAP(); } } void showMatrix() { // https://javl.github.io/image2cpp/ // 'pixil-frame-0', 7x10px const unsigned char bitcoinlogo[] PROGMEM = { 0x48, 0xfc, 0xfe, 0xc6, 0xfc, 0xfc, 0xc6, 0xfe, 0xfc, 0x48}; matrix.fillScreen(0); matrix.setCursor(x, 0); matrix.print(value_bitcoin); if (--x < -72) { x = matrix.width(); if (++pass >= 3) pass = 0; matrix.setTextColor(colors[pass]); } matrix.drawBitmap(4, 6, bitcoinlogo, 7, 10, colors[3]); matrix.show(); delay(100); } void setup() { Serial.begin(115200); connectAP(); matrix.begin(); matrix.setTextWrap(false); matrix.setBrightness(40); matrix.setTextColor(colors[0]); matrix.setTextSize(1); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= 15000) { previousMillis = currentMillis; getCryptoData(); } showMatrix(); }
Credentials:
const char* ssid = "az-delivery"; const char* password = "mysecretpassword";