Вопросы по библиотеке fastled для создания проекта

Kiri

✩✩✩✩✩✩✩
1 Янв 2021
13
0
Всем доброго времени суток. Я разрабатываю проект клона часов LaMetric. Купил все комплектующие и начал кодить вроде все нормально но тут возникает проблема я не умею выводить изображение на матрицу. И тут я сел. Не знаю что делать разные форум перечитал и зарубежные в том числе но ничего не нашол. Надеюсь мне тут смогут помочь.
Все я пишу на fastled на платформе nodemcu v3 (esp8266)
 

bort707

★★★★★★✩
21 Сен 2020
2,895
860
Надеюсь мне тут смогут помочь.
интересно, какой помощи вы ждете?
Не умеете выводить изображение на матрицу - это как? Обьяснить вам, как пользоваться библиотекой fastLEd ? - так таких обьяснялок в инете сотни...
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
В смысле "как выводить на матрицу"?
Расковыряйте любой пример из библиотеки, там интуитивно все понятно.
 

bort707

★★★★★★✩
21 Сен 2020
2,895
860
А у меня все так просто неработает
вторично спрашиваю - какой помощи вы ждете с такими вопросами?
"не работает" - это не диагностика. Вы ждете что кто-то к вам домой приедет и во всем за вас разберется?

Хотите помощи - потратьте часть своего времени на внятное описание проблемы, с приведением кода. сообщениями об ошибках...
 

Kiri

✩✩✩✩✩✩✩
1 Янв 2021
13
0
Проблема в том что этот скрипт разчитивается на матрицу 16*16
C++:
// **************** НАСТРОЙКИ МАТРИЦЫ ****************
#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
И ошибка при изминеном скрипте
C++:
// **************** НАСТРОЙКИ МАТРИЦЫ ****************
#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])'



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

и я немного не понимаю как его исправить.
 

bort707

★★★★★★✩
21 Сен 2020
2,895
860
я немного не понимаю как его исправить.
эта ошибка никак не связана с размером матрицы.. Возьмите оригинальный скетч с матрицей 16х16 - он точно также не компилируется.
Где-то на форуме было обсуждение, как исправить...
вот ветка:
https://community.alexgyver.ru/threads/pomogite-reshit-problemu-s-peremennymi.1548/
 

bort707

★★★★★★✩
21 Сен 2020
2,895
860
в той ветке в сообщении #15 я вам написал, как и какую строчку изменить. Что в этом сложного?
 

Kiri

✩✩✩✩✩✩✩
1 Янв 2021
13
0
в той ветке в сообщении #15 я вам написал, как и какую строчку изменить. Что в этом сложного?
Так у меня проблема в тому чтоткогда я меняю ширину матриці на 32 то у меня оно работает не коректно и жалуетс