Изучение различных методов заказа матричного массива Arduino WS2812B

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.