Проблема в том что этот скрипт разчитивается на матрицу 16*16
// **************** НАСТРОЙКИ МАТРИЦЫ ****************
#define LED_PIN 6 // пин ленты
#define BRIGHTNESS 60 // стандартная маскимальная яркость (0-255)
#define CURRENT_LIMIT 2000 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
#define WIDTH 16 // ширина матрицы
#define HEIGHT 16 // высота матрицы
#define SEGMENTS 1 // диодов в одном "пикселе" (для создания матрицы из кусков ленты)
#define COLOR_ORDER GRB // порядок цветов на ленте. Если цвет отображается некорректно - меняйте. Начать можно с RGB
#define MATRIX_TYPE 0 // тип матрицы: 0 - зигзаг, 1 - последовательная
#define CONNECTION_ANGLE 0 // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний
#define STRIP_DIRECTION 0 // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз
// при неправильном наборе настроек вы увидите надпись "Wrong matrix parameters!"
// **************** ДЛЯ РАЗРАБОТЧИКОВ ****************
#include "bitmap2.h"
#define DEBUG 0
#define NUM_LEDS WIDTH * HEIGHT
#include "FastLED.h"
CRGB leds[NUM_LEDS];
// функция загрузки картинки в матрицу. должна быть здесь, иначе не работает =)
void loadImage(uint16_t (*frame)[WIDTH]) {
for (byte i = 0; i < WIDTH; i++)
for (byte j = 0; j < HEIGHT; j++)
drawPixelXY(i, j, gammaCorrection(expandColor((pgm_read_word(&(frame[HEIGHT - j - 1][i]))))));
// да, тут происходит лютенький п@здец, а именно:
// 1) pgm_read_word - восстанавливаем из PROGMEM (флэш памяти) цвет пикселя в 16 битном формате по его координатам
// 2) expandColor - расширяем цвет до 24 бит (спасибо adafruit)
// 3) gammaCorrection - проводим коррекцию цвета для более корректного отображения
}
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0) + analogRead(1)); // пинаем генератор случайных чисел
// настройки ленты
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(BRIGHTNESS);
if (CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);
FastLED.clear();
FastLED.show();
// проверка правильности ориентации
// левый нижний угол - начало координат
drawPixelXY(0, 0, CRGB::Red); // левый нижний красный
drawPixelXY(0, HEIGHT - 1, CRGB::Blue); // левый верхний синий
drawPixelXY(WIDTH - 1, 0, CRGB::Green); // правый нижний зелёный
FastLED.show();
delay(1000);
loadImage(frame00); // показать картинку
}
void loop() {
delay(100);
}
и я не могу его переделать для матрици 32*8 илиже хоть на 8*8
И ошибка при изминеном скрипте
// **************** НАСТРОЙКИ МАТРИЦЫ ****************
#define LED_PIN 6 // пин ленты
#define BRIGHTNESS 60 // стандартная маскимальная яркость (0-255)
#define CURRENT_LIMIT 2000 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
#define WIDTH 32 // ширина матрицы
#define HEIGHT 8 // высота матрицы
#define SEGMENTS 1 // диодов в одном "пикселе" (для создания матрицы из кусков ленты)
#define COLOR_ORDER GRB // порядок цветов на ленте. Если цвет отображается некорректно - меняйте. Начать можно с RGB
#define MATRIX_TYPE 0 // тип матрицы: 0 - зигзаг, 1 - последовательная
#define CONNECTION_ANGLE 0 // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний
#define STRIP_DIRECTION 0 // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз
// при неправильном наборе настроек вы увидите надпись "Wrong matrix parameters!"
// **************** ДЛЯ РАЗРАБОТЧИКОВ ****************
#include "bitmap2.h"
#define DEBUG 0
#define NUM_LEDS WIDTH * HEIGHT
#include "FastLED.h"
CRGB leds[NUM_LEDS];
// функция загрузки картинки в матрицу. должна быть здесь, иначе не работает =)
void loadImage(uint16_t (*frame)[WIDTH]) {
for (byte i = 0; i < WIDTH; i++)
for (byte j = 0; j < HEIGHT; j++)
drawPixelXY(i, j, gammaCorrection(expandColor((pgm_read_word(&(frame[HEIGHT - j - 1][i]))))));
// да, тут происходит лютенький п@здец, а именно:
// 1) pgm_read_word - восстанавливаем из PROGMEM (флэш памяти) цвет пикселя в 16 битном формате по его координатам
// 2) expandColor - расширяем цвет до 24 бит (спасибо adafruit)
// 3) gammaCorrection - проводим коррекцию цвета для более корректного отображения
}
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0) + analogRead(1)); // пинаем генератор случайных чисел
// настройки ленты
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(BRIGHTNESS);
if (CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);
FastLED.clear();
FastLED.show();
// проверка правильности ориентации
// левый нижний угол - начало координат
drawPixelXY(0, 0, CRGB::Red); // левый нижний красный
drawPixelXY(0, HEIGHT - 1, CRGB::Blue); // левый верхний синий
drawPixelXY(WIDTH - 1, 0, CRGB::Green); // правый нижний зелёный
FastLED.show();
delay(1000);
loadImage(frame00); // показать картинку
}
void loop() {
delay(100);
}
вот такая
In file included from C:\Users\Max\Downloads\WSmatrixGyver\WSmatrixGyver_v.1.1\WSmatrixGyver_v.1.1.ino:21:0:
C:\Users\Max\Documents\Arduino\libraries\FastLED-3.2.10/FastLED.h:14:21: note: #pragma message: FastLED version 3.002.010
# pragma message "FastLED version 3.002.010"
^
In file included from C:\Users\Max\Documents\Arduino\libraries\FastLED-3.2.10/FastLED.h:65:0,
from C:\Users\Max\Downloads\WSmatrixGyver\WSmatrixGyver_v.1.1\WSmatrixGyver_v.1.1.ino:21:
C:\Users\Max\Documents\Arduino\libraries\FastLED-3.2.10/fastspi.h:115:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output
# pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output"
^
C:\Users\Max\Downloads\WSmatrixGyver\WSmatrixGyver_v.1.1\WSmatrixGyver_v.1.1.ino: In function 'void setup()':
WSmatrixGyver_v.1.1:55:20: error: cannot convert 'const uint16_t (
)[16] {aka const short unsigned int ()[16]}' to 'uint16_t (
)[32] {aka short unsigned int ()[32]}' for argument '1' to 'void loadImage(uint16_t (*)[32])'
loadImage(frame00); // показать картинку
^
exit status 1
cannot convert 'const uint16_t (
)[16] {aka const short unsigned int ()[16]}' to 'uint16_t (
)[32] {aka short unsigned int ()[32]}' for argument '1' to 'void loadImage(uint16_t (*)[32])'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
и я немного не понимаю как его исправить.