Алгоритм управления последовательностью светодиодов с WS2812 очень прост: первый светодиод принимает и записывает в свою внутреннюю память первые 24 бита с информацией о яркости каждого из трех встроенных в него диодов, а все остальные биты последовательности передает второму светодиоду. Соответственно второй светодиод получит и обработает свои 24 бита, а оставшуюся часть исходного сигнала передаст третьему и т.д. После передачи данных для всех светодиодов необходимо сделать паузу длиной 50 мкс, чтобы состояние светодиодов обновилось.
Для генерации управляющего сигнала может пригодиться микроконтроллер или плата Arduino.
Пример
GND > GND
5V > 5V
D6 > DIN (между ними резистор 200 – 500 Ом)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// 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 6 // 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_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_BOTTOM + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + 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(30);//яркость букв matrix.setTextColor(colors[0]); } int x = matrix.width(); int pass = 0; void loop() { matrix.fillScreen(10);//Яркость фона matrix.setCursor(x, 5);//Расположение текста-выше, ниже matrix.print(F("TEST MATRIZI16x16 Proverka raboti")); if(--x < -184) { //184 -зависит количество букв x = matrix.width(); if(++pass >= 3) pass = 0; matrix.setTextColor(colors[pass]); } matrix.show(); delay(100);//скорость текста } |
Библиотека Adafruit GFX
Библиотека Adafruit NeoMatrix
Библиотека Adafruit NeoPixel
Документация WS2812B