WS2812B — это популярный тип RGB-светодиода, которым можно легко управлять с помощью микроконтроллера Arduino. Когда несколько светодиодов WS2812B расположены в виде матричного массива, они могут создавать захватывающие визуальные эффекты. В этой статье блога мы рассмотрим различные способы заказа матричного массива Arduino WS2812B и предоставим примеры кода для каждого метода.
Метод 1: Построчный порядок
Одним из распространенных методов заказа светодиодной матрицы является подключение светодиодов построчно. Это означает, что каждый ряд светодиодов соединен последовательно, а ряды — параллельно. Фрагмент кода ниже демонстрирует, как можно адресовать светодиоды в порядке строк:
// Define the matrix dimensions
const int numRows = 8;
const int numCols = 8;
// Initialize the LED matrix
Adafruit_NeoPixel matrix = Adafruit_NeoPixel(numRows * numCols, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
matrix.begin();
matrix.show(); // Initialize all LEDs to off
}
void loop() {
// Iterate through each row
for (int row = 0; row < numRows; row++) {
// Iterate through each column in the row
for (int col = 0; col < numCols; col++) {
// Calculate the LED index based on the row and column
int index = row * numCols + col;
// Set the color of the LED at the given index
matrix.setPixelColor(index, matrix.Color(255, 0, 0)); // Red color
// Show the updated LED colors
matrix.show();
// Delay for a short period
delay(100);
}
}
}
Метод 2: порядок «столбец за столбцом».
Другой метод упорядочения заключается в подключении светодиодов «столбец за столбцом». Это означает, что каждый столбец светодиодов соединен последовательно, а столбцы соединены параллельно. Фрагмент кода ниже демонстрирует, как можно адресовать светодиоды в порядке столбец за столбцом:
// Define the matrix dimensions
const int numRows = 8;
const int numCols = 8;
// Initialize the LED matrix
Adafruit_NeoPixel matrix = Adafruit_NeoPixel(numRows * numCols, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
matrix.begin();
matrix.show(); // Initialize all LEDs to off
}
void loop() {
// Iterate through each column
for (int col = 0; col < numCols; col++) {
// Iterate through each row in the column
for (int row = 0; row < numRows; row++) {
// Calculate the LED index based on the column and row
int index = col * numRows + row;
// Set the color of the LED at the given index
matrix.setPixelColor(index, matrix.Color(0, 255, 0)); // Green color
// Show the updated LED colors
matrix.show();
// Delay for a short period
delay(100);
}
}
}
Метод 3: змейка
В змеевидном порядке светодиоды подключаются зигзагом, где каждый ряд меняет направление. Фрагмент кода ниже демонстрирует, как можно адресовать светодиоды в змеевидном порядке:
// Define the matrix dimensions
const int numRows = 8;
const int numCols = 8;
// Initialize the LED matrix
Adafruit_NeoPixel matrix = Adafruit_NeoPixel(numRows * numCols, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
matrix.begin();
matrix.show(); // Initialize all LEDs to off
}
void loop() {
// Iterate through each row
for (int row = 0; row < numRows; row++) {
// Check if the row is odd or even to determine the direction
bool isOddRow = row % 2 == 1;
// Iterate through each column in the row
for (int col = 0; col < numCols; col++) {
// Calculate the LED index based on the row and column
int index = isOddRow ? row * numCols + (numCols - col - 1) : row * numCols + col;
// Set the color of the LED at the given index
matrix.setPixelColor(index, matrix.Color(0, 0, 255)); // Blue color
// Show the updated LED colors
matrix.show();
// Delay for a short period
delay(100);
}
}
}
В этой статье мы рассмотрели три различных метода упорядочивания матричного массива Arduino WS2812B: построчный порядок, поколоночный порядок и змеиный порядок. Каждый метод предлагает уникальный способ адресации и управления светодиодами в матричном массиве. Используя предоставленные примеры кода, вы можете легко реализовать эти методы в своих собственных проектах Arduino, создавая потрясающие визуальные эффекты с помощью светодиодов WS2812B.