// Тест 1: Простая последовательная адресация
void testSequential() {
strip.clear();
for(int i = 0; i < TOTAL_LEDS; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный
}
strip.show();
delay(TEST_DELAY);
strip.clear();
strip.show();
delay(1000);
}
// Тест 2: Блочная адресация
void testBlockAddressing() {
strip.clear();
for(int column = 0; column < MATRIX_WIDTH; column++) {
for(int row = 0; row < MATRIX_HEIGHT; row++) {
int address = column * MATRIX_HEIGHT + row;
if(address < TOTAL_LEDS) {
strip.setPixelColor(address, strip.Color(0, 255, 0)); // Зеленый
}
}
}
strip.show();
delay(TEST_DELAY);
strip.clear();
strip.show();
delay(1000);
}
// Тест 3: Адресация с пропусками (контроллеры могут занимать адреса)
void testWithGaps() {
strip.clear();
for(int column = 0; column < MATRIX_WIDTH; column++) {
for(int row = 0; row < MATRIX_HEIGHT; row++) {
// Пропускаем один адрес на каждый контроллер
int address = column * (MATRIX_HEIGHT + 1) + row;
if(address < TOTAL_LEDS) {
strip.setPixelColor(address, strip.Color(0, 0, 255)); // Синий
}
}
}
strip.show();
delay(TEST_DELAY);
strip.clear();
strip.show();
delay(1000);
}
// Тест 4: Зигзаг адресация
void testZigzag() {
strip.clear();
int address = 0;
for(int column = 0; column < MATRIX_WIDTH; column++) {
if(column % 2 == 0) {
// Четные столбцы - сверху вниз
for(int row = 0; row < MATRIX_HEIGHT; row++) {
if(address < TOTAL_LEDS) {
strip.setPixelColor(address, strip.Color(255, 255, 0)); // Желтый
address++;
}
}
} else {
// Нечетные столбцы - снизу вверх
for(int row = MATRIX_HEIGHT - 1; row >= 0; row--) {
if(address < TOTAL_LEDS) {
strip.setPixelColor(address, strip.Color(255, 255, 0)); // Желтый
address++;
}
}
}
}
strip.show();
delay(TEST_DELAY);
strip.clear();
strip.show();
delay(1000);
}
// Тест 5: Обратная адресация
void testReverse() {
strip.clear();
for(int i = 0; i < TOTAL_LEDS; i++) {
int reverseAddress = TOTAL_LEDS - 1 - i;
strip.setPixelColor(reverseAddress, strip.Color(255, 0, 255)); // Пурпурный
}
strip.show();
delay(TEST_DELAY);
strip.clear();
strip.show();
delay(1000);
}
// Тест 6: Адресация по столбцам (сначала все первые светодиоды, потом все вторые...)
void testColumnFirst() {
strip.clear();
int address = 0;
for(int row = 0; row < MATRIX_HEIGHT; row++) {
for(int column = 0; column < MATRIX_WIDTH; column++) {
if(address < TOTAL_LEDS) {
strip.setPixelColor(address, strip.Color(0, 255, 255)); // Голубой
address++;
}
}
}
strip.show();
delay(TEST_DELAY);
strip.clear();
strip.show();
delay(1000);
}
// Тест 7: Расширенная адресация (возможно нужно больше адресов для контроллеров)
void testExtended() {
strip.clear();
// Пробуем адресацию с учетом того, что контроллеры могут занимать дополнительные адреса
for(int column = 0; column < MATRIX_WIDTH; column++) {
for(int row = 0; row < MATRIX_HEIGHT; row++) {
// Каждый контроллер добавляет один дополнительный адрес
int address = column * (MATRIX_HEIGHT + 1) + row + 1; // +1 для контроллера
if(address < TOTAL_LEDS) {
strip.setPixelColor(address, strip.Color(255, 255, 255)); // Белый
}
}
}