Гайд по GyverMatrixOS

29.12.2018 добавлена версия 1.10
• Версия 1.3 и выше прошивки GyverMatrixOS не помещается в Arduino Nano со всеми эффектами и режимами на матрице 16х16! Используйте матрицу меньшего размера или отключайте Bluetooth/текст/эффекты или используйте Arduino Mega/esp8266! См. ниже.

Здесь рассмотрим все возможности и настройки прошивки GyverMatrixOS для управления матрицей адресных светодиодов.
▶ Скачать актуальную версию прошивки
▶ Подробный гайд по сборке и настройке матрицы, важные моменты
▶ Страница проекта “Адресная матрица” – схемы, ссылки на компоненты, инструкции по прошивке
Актуальная версия – 1.10

GyverMatrixOS 1.0:
• Добавлен режим без Bluetooth (автономный)
• Более удачно сконфигурированы таймеры
• Пофикшен баг в тетрисе
• Добавлен эффект “звездопад”
• Переделана логика работы: теперь у нас есть полностью настраиваемый “скринсейвер” из режимов и игр
• Добавлен вывод картинок и анимаций
• Добавлена возможность отключать игры и функции для экономии памяти
• Добавлено ограничение по току ленты
• Добавлен эффект “конфетти”

GyverMatrixOS 1.1:
• Поправлен баг с таймером

GyverMatrixOS 1.3:
• Добавлен вагон эффектов
• Счёт в играх не отображается в демо режиме
• Добавлена совместимость с esp8266 (nodeMCU, wemos…)
• Поправлен баг в звездопаде
• Оптимизирован код

GyverMatrixOS 1.4:
• Больше оптимизации!
• Исправлены баги!
• Добавлены кнопки управления режимами

GyverMatrixOS 1.5:
• Поддержка приложением версии выше 1.8 новых эффектов

GyverMatrixOS 1.6:
• Добавлены часы
• Режим часов поверх эффектов
• Разный цвет часов для разных эффектов
• Три цветовые схемы часов (две из них динамические)
• Ориентация часов – вертикальные и горизонтальные
• Внутренняя нумерация режимов
• Режимы меняются плавно через чёрный
• Поправлен баг со скоростью текста
• Режим не меняется, пока текст не доедет до края

GyverMatrixOS 1.7:
• Пофикшен баг функции измерения цвета!
• Полная поддержка esp8266 и STM32
• Пофикшены баги для других платформ
• Минус куча багов!
• Все игры и эффекты работают на всех платформах
• Добавлена игра “runner” по типу динозаврика в Chrome
• Добавлена игра flappy bird
• Добавлена игра Арканоид
• Поправлен баг с непереключением игр

GyverMatrixOS 1.71:
• Поправлены пины для всех плат под новые схемы

GyverMatrixOS 1.8:
• Добавлена возможность включать и выключать авто воспроизведение из приложения
• Из приложения можно переключать режимы в режиме ожидания
• Добавлена настройка часов с кнопок
• Оптимизирована работа кнопок
• Настройка времени между режимами из приложения

GyverMatrixOS 1.9:
• Добавлена настройка порядка цветов ленты (если у вас зелёный огонь – вам сюда)
• Добавлена настройка “показывать текст только один раз” для создания сложных многоцветных бегущих строк

GyverMatrixOS 1.10:
• Добавлена возможность выбрать, в каких режимах выводить часы “в наложении”
• Добавлен режим “сегментной” матрицы (для создания матрицы из кусков ленты)
• Пофикшены баги с esp8266
• Изменены пины кнопок NodeMCU и Wemos! Смотри новые схемы

  • 3 режима вывода бегущей строки

  • 6 игр с управлением по Bluetooth или кнопками

  • 18 настраиваемых эффектов
  • Вывод изображений и анимации
  • Режим часов с тремя эффектами и наложением

  • Управление по Bluetooth

  • Планируется добавить: Wi-Fi часы для esp8266 и поддержку бортового RTC для STM32

ОСНОВНЫЕ НАСТРОЙКИ

Система имеет большое количество настроек, но есть важные настройки, без правильного указания которых система будет работать некорректно.

CURRENT_LIMIT – лимит по току в миллиамперах. Система может рассчитывать ток потребления матрицы на основе анализа цвета и яркости каждого светодиода и автоматически уменьшать общую яркость (т.е. потребление матрицы), чтобы потребляемый ток не выходил за указанный лимит. Таким образом можно питать матрицу даже от слабого блока питания и не бояться за него. Функция работает очень чётко, я проверял.

MATRIX_TYPECONNECTION_ANGLE и STRIP_DIRECTION задают тип соединения матрицы, её положение и точку подключения. Подробно и с картинками об этом написано в гайде о матрицах.

WIDTH и HEIGHT – ширина и высота матрицы в количестве светодиодов. Примечание: чем больше матрица, тем больше места занимает прошивка в памяти.

MCU_TYPE – тип микроконтроллера. Версия 1.7 полностью оптимизирована для работы на AVR (Arduino Nano/Uno/Mini/Micro/Mega), esp8266 (generic esp8266, NodeMCU, Wemos) и STM32 (STM32F103 “Arduino” Blue Pill). Часы реального времени пока что реализованы только для RTC DS3231!

  • В Arduino Nano/UNO/Pro Mini при использовании набора эффектов и режимов как в видео про гирлянду очень впритык вмещается матрица 16х16 (256 диодов), возможны зависания и перебои в работе;

  • В Arduino Mega вмещается около 1700 светодиодов (матрица 40×42)

  • В ESP8266/NodeMCU/Wemos или STM32 “Blue Pill” вмещается ГОРАЗДО больше светодиодов, но нужно понимать, что скорость обновления ленты зависит от количества светодиодов, и при 500 диодах будет 60 кадров в секунду (fps), при 1000 будет 30 fps, при 2000 будет 15 fps, т.е. ощутимые глюки в быстрых эффектах.

В системе можно подключать и отключать “модули” для экономии памяти. Памяти два типа: Flash (сам программный  код скетча) и SRAM (оперативная память, переменные). SRAM память желательно не забивать более чем на 90%, иначе возможны глюки! Flash можно забивать под 100%. Также SRAM занимают светодиоды. Картинки занимают практически только Flash. Если скетч не лезет – отключайте модули =)

Данные для Arduino Nano/Uno/Mini (ATmega 328)
МодульFlash, %SRAM, %Описание
Светодиоды (10 шт.)02.5Каждые 10 светодиодов
USE_BUTTONS61Кнопки (управление в играх и переключение режимов)
BT_MODE 142Поддержка управления через Bluetooth
USE_NOISE_EFFECTS 1116Полноэкранные “Noise” эффекты для 16х16
USE_FONTS 51Режимы бегущей строки
USE_CLOCK1322Часы (RTC DS3231) с наложением
USE_TETRIS 73Игра тетрис
USE_SNAKE 45Игра змейка
USE_MAZE 71Игра лабиринт
USE_RUNNER51Игра бег с препятствиями
USE_FLAPPY51Игра Flappy Bird
USE_ARKAN101Игра Арканоид

Также можно уменьшить занимаемую память убирая “стандартные” эффекты из custom списка режимов. Компилятор умный: если эффект не используется в коде – он его даже не загружает в плату.

// ******************************** НАСТРОЙКИ ********************************
// чем больше матрица и количество частиц (эффекты), тем выше шанс того, что всё зависнет!
// Данный код стабильно работает на матрице 16х16 (256 диодов). Больше - на ваш страх и риск

// ************************ МАТРИЦА *************************
#define BRIGHTNESS 150        // стандартная маскимальная яркость (0-255)
#define CURRENT_LIMIT 2000    // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит

#define WIDTH 16              // ширина матрицы
#define HEIGHT 16             // высота матрицы

#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! Set to default"
// шпаргалка по настройке матрицы здесь! https://alexgyver.ru/matrix_guide/

// ******************** ЭФФЕКТЫ И РЕЖИМЫ ********************
#define D_TEXT_SPEED 100      // скорость бегущего текста по умолчанию (мс)
#define D_EFFECT_SPEED 100    // скорость эффектов по умолчанию (мс) 
#define D_GAME_SPEED 250      // скорость игр по умолчанию (мс)
#define D_GIF_SPEED 80        // скорость гифок (мс)
#define DEMO_GAME_SPEED 60    // скорость игр в демо режиме (мс)

#define AUTOPLAY 1            // 0 выкл / 1 вкл автоматическую смену режимов
#define AUTOPLAY_PERIOD 7    // время между авто сменой режимов (секунды)
#define IDLE_TIME 5          // время бездействия кнопок или Bluetooth (в секундах) после которого запускается автосмена режимов и демо в играх

#define GLOBAL_COLOR_1 CRGB::Green    // основной цвет №1 для игр
#define GLOBAL_COLOR_2 CRGB::Orange   // основной цвет №2 для игр
// поддерживает 150 цветов, названия можно посмотреть в библиотеке FastLED, файл pixeltypes.h, строка 590
// также цвет можно задавать в формате HEX (0XFF25AB). Генерировать в любом онлайн колорпикере или в фотошопе!

#define SCORE_SIZE 0          // размер символов счёта в игре. 0 - маленький для 8х8 (шрифт 3х5), 1 - большой (шрифт 5х7)
#define FONT_TYPE 1           // (0 / 1) два вида маленького шрифта в выводе игрового счёта

// ****************** ПИНЫ ПОДКЛЮЧЕНИЯ *******************
#define LED_PIN 6           // пин ленты
#define BUTT_UP 3           // кнопка вверх
#define BUTT_DOWN 5         // кнопка вниз
#define BUTT_LEFT 2         // кнопка влево
#define BUTT_RIGHT 4        // кнопка вправо

// ************** ОТКЛЮЧЕНИЕ КОМПОНЕНТОВ СИСТЕМЫ (для экономии памяти) *************
#define USE_BUTTONS 0       // использовать физические кнопки управления играми (0 нет, 1 да)
#define BT_MODE 0           // использовать блютус (0 нет, 1 да)
#define USE_NOISE_EFFECTS 1 // крутые полноэкранные эффекты (0 нет, 1 да) СИЛЬНО ЖРУТ ПАМЯТЬ!!!11
#define USE_FONTS 1         // использовать буквы (бегущая строка) (0 нет, 1 да)

#define USE_TETRIS 1        // тетрис (0 нет, 1 да)
#define USE_SNAKE 1         // змейка (0 нет, 1 да)
#define USE_MAZE 1          // лабиринт (0 нет, 1 да)

ЭФФЕКТЫ И РЕЖИМЫ

fillString(<текст>, <цвет>)

fillString(<текст>, 1)

fillString(<текст>, 2)

madnessNoise()

cloudNoise()

lavaNoise()

plasmaNoise()

rainbowNoise()

rainbowStripeNoise()

zebraNoise()

forestNoise()

oceanNoise()

snowRoutine()

sparklesRoutine()

matrixRoutine()

starfallRoutine()

ballRoutine()

ballsRoutine()

rainbowRoutine()

rainbowDiagonalRoutine()

fireRoutine()

snakeRoutine()

tetrisRoutine()

mazeRoutine()

runnerRoutine()

flappyRoutine()

arkanoidRoutine()

clockRoutine()

НАСТРОЙКИ РЕЖИМОВ

// эффект "шарики"
#define BALLS_AMOUNT 3    // количество "шариков"
#define CLEAR_PATH 1      // очищать путь
#define BALL_TRACK 1      // (0 / 1) - вкл/выкл следы шариков
#define DRAW_WALLS 1      // режим с рисованием препятствий для шаров
#define TRACK_STEP 70     // длина хвоста шарика (чем больше цифра, тем хвост короче)

// эффект "квадратик"
#define BALL_SIZE 3       // размер шара
#define RANDOM_COLOR 1    // случайный цвет при отскоке

// эффект "огонь"
#define SPARKLES 1        // вылетающие угольки вкл выкл
#define HUE_ADD 0         // добавка цвета в огонь (от 0 до 230) - меняет весь цвет пламени

// эффект "кометы"
#define TAIL_STEP 100     // длина хвоста кометы
#define SATURATION 150    // насыщенность кометы (от 0 до 255)
#define STAR_DENSE 60     // количество (шанс появления) комет

// эффект "конфетти"
#define DENSE 3           // плотность конфетти
#define BRIGHT_STEP 70    // шаг уменьшения яркости

// эффект "снег"
#define SNOW_DENSE 10     // плотность снегопада
// "масштаб" эффектов. Чем больше, тем крупнее!
#define MADNESS_SCALE 100
#define CLOUD_SCALE 30
#define LAVA_SCALE 50
#define PLASMA_SCALE 30
#define RAINBOW_SCALE 30
#define RAINBOW_S_SCALE 20
#define ZEBRA_SCALE 30
#define FOREST_SCALE 120
#define OCEAN_SCALE 90
// **************** НАСТРОЙКИ ЗМЕЙКИ ****************
#define START_LENGTH 4    // начальная длина змейки
#define MAX_LENGTH 80     // максимальная длина змейки

// **************** НАСТРОЙКИ ТЕТРИС ****************
#define FAST_SPEED 20     // скорость падения при удержании "вниз" (меньше - быстрее)
#define STEER_SPEED 40    // скорость перемещения в бок при удержании кнопки (меньше - быстрее) на BT версии не работает!

// ***************** НАСТРОЙКИ ГЕНЕРАЦИИ ЛАБИРИНТА *****************
#define GAMEMODE 0        // режим игры: 0 - видим весь лабиринт, 1 - видим вокруг себя часть
#define FOV 3             // область видимости в режиме игры 1

// размеры лабиринта ДОЛЖНЫ БЫТЬ НЕЧЁТНЫЕ независимо от размеров матрицы!
// при SHIFT 1 размер лабиринта можно ставить на 1 длиннее матрицы (матрица 16х16 лабиринт 17х17)
#define MAZE_WIDTH 17     // ширина лабиринта
#define MAZE_HEIGHT 17    // высота лабиринта
#define SHIFT 1           // (1 да / 0 нет) смещение лабиринта (чтобы не видеть нижнюю и левую стену)

#define MAX_STRAIGHT 7    // максимальная длина прямых отрезков пути по краям
#define HOLES 2           // количество дырок в стенах
#define MIN_PATH 20       // минимальная длина пути к выходу
// не рекомендуется ставить больше, чем треть количества светодиодов на матрице!

// **************** НАСТРОЙКИ RUNNER ****************
// 1 пиксель = 10 мм
#define POP_SPEED 420     // скорость подскока (в мм/с)
#define GRAVITY 1400      // ускорение падения (в мм/с2)
#define DT 20             // период интегрирования (мс)
#define OBST_SPEED 50     // скорость препятствий
#define MIN_GAP 8         // минимальное расстояние между препятствиями
#define OBST_HEIGHT 4     // макс. высота препятствия
#define OBST_PROB 10      // шанс появления препятствия
#define DEMO_JUMP 6       // за какое расстояние делать прыжок в демо режиме

// **************** НАСТРОЙКИ FLAPPY ****************
// 1 пиксель = 10 мм
#define POP_SPEED_F 200     // скорость подскока (в мм/с)
#define POP_POS_F 20        // скорость подскока (в мм/с)
#define GRAVITY_F 900       // ускорение падения (в мм/с2)
#define DT_F 20             // период интегрирования (мс)
#define OBST_SPEED_F 130    // скорость препятствий
#define MIN_GAP_F 9         // минимальное расстояние между препятствиями
#define OBST_HEIGHT_F 6     // макс. высота препятствия (размер щели)
#define DEMO_JUMP_F 6       // за какое расстояние делать прыжок в демо режиме

// **************** НАСТРОЙКИ ARKAN ****************
#define SHELF_LENGTH 5    // длина полки
#define VELOCITY 5        // скорость шара
#define BALL_SPEED 50     // период интегрирования

#define BLOCKS_H 4        // высота кучи блоков
#define LINE_NUM 8        // количество "линий" с блоками других уровней
#define LINE_MAX 4        // макс. длина линии
#define SMOOTH_CHANGE 1     // плавная смена режимов через чёрный
#define SHOW_FULL_TEXT 1    // не переключать режим, пока текст не покажется весь
// ****************** НАСТРОЙКИ ЧАСОВ *****************
#define OVERLAY_CLOCK 1     // часы на фоне всех эффектов и игр. Жрёт SRAM память!
#define CLOCK_ORIENT 0      // 0 горизонтальные, 1 вертикальные
#define CLOCK_X 0           // позиция часов по X (начало координат - левый нижний угол)
#define CLOCK_Y 0           // позиция часов по Y (начало координат - левый нижний угол)
#define COLOR_MODE 2        // Режим цвета часов
//                          0 - заданные ниже цвета
//                          1 - радужная смена (каждая цифра)
//                          2 - радужная смена (часы, точки, минуты)

#define MIN_COLOR CRGB::White     // цвет минут
#define HOUR_COLOR CRGB::White    // цвет часов
#define DOT_COLOR CRGB::Red       // цвет точек

#define HUE_STEP 5          // шаг цвета часов в режиме радужной смены
#define HUE_GAP 30          // шаг цвета между цифрами в режиме радужной смены

// эффекты, в которых отображаются часы в наложении
byte overlayList[] = {
  MADNESS_NOISE,
  OCEAN_NOISE,
};

/*
   Список режимов:
  GAME_MODE
  MADNESS_NOISE
  CLOUD_NOISE
  LAVA_NOISE
  PLASMA_NOISE
  RAINBOW_NOISE
  RAINBOWSTRIPE_NOISE
  ZEBRA_NOISE
  FOREST_NOISE
  OCEAN_NOISE
  SNOW_ROUTINE
  SPARKLES_ROUTINE
  MATRIX_ROUTINE
  STARFALL_ROUTINE
  BALL_ROUTINE
  BALLS_ROUTINE
  RAINBOW_ROUTINE
  RAINBOWDIAGONAL_ROUTINE
  FIRE_ROUTINE
  IMAGE_MODE
*/
// **************** НАСТРОЙКИ ****************
#define TEXT_DIRECTION 1  // 1 - по горизонтали, 0 - по вертикали
#define MIRR_V 0          // отразить текст по вертикали (0 / 1)
#define MIRR_H 0          // отразить текст по горизонтали (0 / 1)

#define TEXT_HEIGHT 0     // высота, на которой бежит текст (от низа матрицы)
#define LET_WIDTH 5       // ширина буквы шрифта
#define LET_HEIGHT 8      // высота буквы шрифта
#define SPACE 1           // пробел

“КАСТОМНЫЙ” СПИСОК ЭФФЕКТОВ

Во вкладке custom можно настроить свой список режимов, которые будут меняться по таймеру и/или кнопкой. Настраивать список нужно следуя простым правилам.

Полный список цветов для текста можно посмотреть вот здесь в самом низу страницы. Там даже с примерами “цвета” в виде картинки.

Для знающих английский привожу просто список цветов ниже.

CRGB::AliceBlueCRGB::DarkSlateGrayCRGB::LightSalmonCRGB::PapayaWhip
CRGB::AmethystCRGB::DarkTurquoiseCRGB::LightSeaGreenCRGB::PeachPuff
CRGB::AntiqueWhiteCRGB::DarkVioletCRGB::LightSkyBlueCRGB::Peru
CRGB::AquaCRGB::DeepPinkCRGB::LightSlateGrayCRGB::Pink
CRGB::AquamarineCRGB::DeepSkyBlueCRGB::LightSteelBlueCRGB::Plaid
CRGB::AzureCRGB::DimGrayCRGB::LightYellowCRGB::Plum
CRGB::BeigeCRGB::DodgerBlueCRGB::LimeCRGB::PowderBlue
CRGB::BisqueCRGB::FireBrickCRGB::LimeGreenCRGB::Purple
CRGB::BlackCRGB::FloralWhiteCRGB::LinenCRGB::Red
CRGB::BlanchedAlmondCRGB::ForestGreenCRGB::MagentaCRGB::RosyBrown
CRGB::BlueCRGB::FuchsiaCRGB::MaroonCRGB::RoyalBlue
CRGB::BlueVioletCRGB::GainsboroCRGB::MediumAquamarineCRGB::SaddleBrown
CRGB::BrownCRGB::GhostWhiteCRGB::MediumBlueCRGB::Salmon
CRGB::BurlyWoodCRGB::GoldCRGB::MediumOrchidCRGB::SandyBrown
CRGB::CadetBlueCRGB::GoldenrodCRGB::MediumPurpleCRGB::SeaGreen
CRGB::ChartreuseCRGB::GrayCRGB::MediumSeaGreenCRGB::Seashell
CRGB::ChocolateCRGB::GreenCRGB::MediumSlateBlueCRGB::Sienna
CRGB::CoralCRGB::GreenYellowCRGB::MediumSpringGreenCRGB::Silver
CRGB::CornflowerBlueCRGB::HoneydewCRGB::MediumTurquoiseCRGB::SkyBlue
CRGB::CornsilkCRGB::HotPinkCRGB::MediumVioletRedCRGB::SlateBlue
CRGB::CrimsonCRGB::IndianRedCRGB::MidnightBlueCRGB::SlateGray
CRGB::CyanCRGB::IndigoCRGB::MintCreamCRGB::Snow
CRGB::DarkBlueCRGB::IvoryCRGB::MistyRoseCRGB::SpringGreen
CRGB::DarkCyanCRGB::KhakiCRGB::MoccasinCRGB::SteelBlue
CRGB::DarkGoldenrodCRGB::LavenderCRGB::NavajoWhiteCRGB::Tan
CRGB::DarkGrayCRGB::LavenderBlushCRGB::NavyCRGB::Teal
CRGB::DarkGreenCRGB::LawnGreenCRGB::OldLaceCRGB::Thistle
CRGB::DarkKhakiCRGB::LemonChiffonCRGB::OliveCRGB::Tomato
CRGB::DarkMagentaCRGB::LightBlueCRGB::OliveDrabCRGB::Turquoise
CRGB::DarkOliveGreenCRGB::LightCoralCRGB::OrangeCRGB::Violet
CRGB::DarkOrangeCRGB::LightCyanCRGB::OrangeRedCRGB::Wheat
CRGB::DarkOrchidCRGB::LightGoldenrodYellowCRGB::OrchidCRGB::White
CRGB::DarkRedCRGB::LightGreenCRGB::PaleGoldenrodCRGB::WhiteSmoke
CRGB::DarkSalmonCRGB::LightGreyCRGB::PaleGreenCRGB::Yellow
CRGB::DarkSeaGreenCRGB::LightPinkCRGB::PaleTurquoiseCRGB::YellowGreen
CRGB::DarkSlateBlueCRGB::PaleVioletRed

УПРАВЛЕНИЕ КНОПКАМИ

Кнопок для управления системой всего 5 штук – 4 кнопки направления (ВЕРХ, НИЗ, ПРАВО, ЛЕВО) и кнопка ВЫБОР.

Кнопка ВЫБОР активна только тогда, когда выбрана любая игра или часы. Когда выбрана игра: Клик – перехватить управление игрой. Повторный клик – вернуться к демо-режиму. Удержание – включить режим “с фонариком” в лабиринте =) Когда выбран режим часов clockRoutine(): удержание – вход в настройку времени. ПРАВО, ЛЕВО – настройка часов, ВЕРХ, НИЗ – настройка минут. Повторное удержание кнопки ВЫБОР – выйти из настройки времени. В любой игре ВЕРХ, НИЗ, ПРАВО, ЛЕВО отвечают за управление, ВЕРХ в Тетрисе поворачивает фигуру.

В демо-режиме кнопки ВЕРХ, НИЗ, ПРАВО, ЛЕВО делают следующее:

КнопкаКликУдержание
ВЕРХВключить автоматическую смену эффектовУвеличить яркость матрицы
НИЗВыключить автоматическую смену эффектовУменьшить яркость матрицы
ПРАВОСледующий эффектУвеличить скорость эффекта
ЛЕВОПредыдущий эффектУменьшить скорость эффекта
Примечание: игра в демо-режиме является эффектом

ПРОШИВКА НА ДРУГИЕ ПЛАТФОРМЫ

Версия прошивки 1.7 и выше стабильно работает на микроконтроллерах AVR (Arduino NANO/UNO/MEGA), esp8266 (generic esp8266, NodeMCU, Wemos) и STM32 (STM32 “Arduino” Blue Pill). Зачем это нужно? Как говорилось выше, прошивка очень большая и со всеми эффектами и режимами не лезет в Arduino NANO/UNO, также не лезут матрицы большого размера. На другие платы всё вмещается + остаётся куча места! Ниже приведу инструкции по настройке Arduino IDE и прошивке для каждого типа плат. Но первым делом не забудьте указать в скетче в настройках (прямо под настройкой матрицы) параметр MCU_TYPE соответственно используемой плате! MCU_TYPE 0 – для плат Arduino, MCU_TYPE 1 – для плат на esp8266 и MCU_TYPE 2 для плат на STM32. Схемы подключения перечисленных плат можно найти на основной странице проекта.

  • Arduino IDE вместе со всеми драйверами устанавливается и настраивается согласно статье первые шаги с Arduino.
  • Библиотеки установить из папки архива libraries/ESP, ARDUINO
  • Выбираем плату и прошиваемся

  • Arduino IDE вместе со всеми драйверами установить и согласно статье первые шаги с Arduino.
  • Библиотеки установить из папки архива libraries/ESP, ARDUINO
  • Зайти в Файл/Настройки, в самом низу “Дополнительные ссылки для менеджера плат”. Вставить строку http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать ОК
  • Инструменты/Плата/Менеджер плат… (самый первый в списке)
  • В появившемся окне в поиск вписать esp8266, выбрать esp8266 by ESP8266 Community и нажать установить. Ставим версию 2.5.2
  • Теперь в списке плат (Инструменты/Плата) появится семейство плат на esp8266. Выбрать Wemos D1 R1. Под неё всё компилируется нормально, под другие платы почему-то не хочет =)
  • Для NodeMCU:
    • Подключить плату по USB
    • Зажать и удерживать кнопку FLASH
    • Кликнуть по кнопке RST
    • Отпустить кнопку FLASH
    • Выбрать в Arduino IDE порт и нажать загрузка
  • Для Wemos D1 Mini:
    • Подключить плату по USB
    • На всякий случай тыкнуть RESET
    • Выбрать порт и нажать загрузка
Начнём с разбора баттхёрта. Да, мы будем шить на STM32 через Arduino IDE и будем использовать мягко скажем неоптимальную библиотеку для работы с лентой. Не нравится – перепишите весь скетч под себя, используя DMA для работы с лентой. Меня всё устраивает в таком виде, в каком оно есть, к тому же моя специальность очень далека от микроконтроллеров. Всё работает, и это для меня самое главное.
  • Arduino IDE вместе со всеми драйверами установить и согласно статье первые шаги с Arduino.
  • Скачать архив с сайта (резерв на яндекс.диске)
  • Для Windows: скопировать папку Arduino_STM32 из папки Arduino_STM32 core for FastLED (из архива) в Документы/Arduino/hardware. Если папки hardware нет, то создать её! Примечание: это модифицированное официальное ядро, с официальным не работает! Так что удаляем своё (если было) и ставим из архива.
  • Удалить свою библиотеку FastLED (C:/Program Files (x86)/Arduino/libraries/FastLED) и вставить в папку библиотек папку FastLED-stm32patch (из архива/libraries/STM32). Примечание: это модифицированная библиотека, можно работать с ней и дальше с остальными платами. Модификация просто добавляет корректную поддержку STM32.
  • Запускаем Arduino IDE. Инструменты/Плата/Менеджер плат. Листаем и находим Arduino SAM Boards (32-bits ARM Cotrex-M3) by Arduino. Устанавливаем.
  • Выбираем плату Инструменты/Плата/Generic STM32F103C
  • Инструменты/Upload method/STLink. Примечание: есть несколько способов загрузить прошивку на плату Blue Pill. Через программатор ST-Link проще и надёжнее всего!
  • Устанавливаем драйвер для ST-Link: файл dpinst_amd64.exe из папки Драйвер ST-Link (прошиватор) (из архива).
  • Подключаем ST-Link к компьютеру и ждём установки драйверов. Отключаем ST-Link от компьютера.
  • Подключаем ST-Link к плате (смотри фотку в архиве). GND->GND, 3.3V->3.3, SWDIO->DIO, SWCLK->DCLK.
  • Обе перемычки на плате ставим в положения 0 (смотри фотку в архиве).
  • Подключаем ST-Link с висящей Blue Pill к компьютеру и нажимаем загрузить прошивку. Всё, можно пользоваться!

ПОДГОТОВКА И ВЫВОД ИЗОБРАЖЕНИЙ