Гайд по GyverMatrixOS

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

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

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:
• Добавлена возможность включать и выключать авто воспроизведение из приложения
• Из приложения можно переключать режимы в режиме ожидания
• Добавлена настройка часов с кнопок
• Оптимизирована работа кнопок
• Настройка времени между режимами из приложения

  • 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 Leonardo/Micro/Pro Micro вмещается около 400 светодиодов (матрица 20×20);

  • В 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 шт.) 0 2.5 Каждые 10 светодиодов
USE_BUTTONS 6 1 Кнопки (управление в играх и переключение режимов)
BT_MODE  14 2 Поддержка управления через Bluetooth
USE_NOISE_EFFECTS  11 16 Полноэкранные “Noise” эффекты для 16х16
USE_FONTS  5 1 Режимы бегущей строки
USE_CLOCK 13 22 Часы (RTC DS3231) с наложением
USE_TETRIS  7 3 Игра тетрис
USE_SNAKE  4 5 Игра змейка
USE_MAZE  7 1 Игра лабиринт
USE_RUNNER 5 1 Игра бег с препятствиями
USE_FLAPPY 5 1 Игра Flappy Bird
USE_ARKAN 10 1 Игра Арканоид
// ******************************** НАСТРОЙКИ ********************************
// чем больше матрица и количество частиц (эффекты), тем выше шанс того, что всё зависнет!
// Данный код стабильно работает на матрице 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 WALKING_CLOCK 1     // часы бегают по экрану в clockRoutine() (не работает)
#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          // шаг цвета между цифрами в режиме радужной смены
// **************** НАСТРОЙКИ ****************
#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::AliceBlue CRGB::DarkSlateGray CRGB::LightSalmon CRGB::PapayaWhip
CRGB::Amethyst CRGB::DarkTurquoise CRGB::LightSeaGreen CRGB::PeachPuff
CRGB::AntiqueWhite CRGB::DarkViolet CRGB::LightSkyBlue CRGB::Peru
CRGB::Aqua CRGB::DeepPink CRGB::LightSlateGray CRGB::Pink
CRGB::Aquamarine CRGB::DeepSkyBlue CRGB::LightSteelBlue CRGB::Plaid
CRGB::Azure CRGB::DimGray CRGB::LightYellow CRGB::Plum
CRGB::Beige CRGB::DodgerBlue CRGB::Lime CRGB::PowderBlue
CRGB::Bisque CRGB::FireBrick CRGB::LimeGreen CRGB::Purple
CRGB::Black CRGB::FloralWhite CRGB::Linen CRGB::Red
CRGB::BlanchedAlmond CRGB::ForestGreen CRGB::Magenta CRGB::RosyBrown
CRGB::Blue CRGB::Fuchsia CRGB::Maroon CRGB::RoyalBlue
CRGB::BlueViolet CRGB::Gainsboro CRGB::MediumAquamarine CRGB::SaddleBrown
CRGB::Brown CRGB::GhostWhite CRGB::MediumBlue CRGB::Salmon
CRGB::BurlyWood CRGB::Gold CRGB::MediumOrchid CRGB::SandyBrown
CRGB::CadetBlue CRGB::Goldenrod CRGB::MediumPurple CRGB::SeaGreen
CRGB::Chartreuse CRGB::Gray CRGB::MediumSeaGreen CRGB::Seashell
CRGB::Chocolate CRGB::Green CRGB::MediumSlateBlue CRGB::Sienna
CRGB::Coral CRGB::GreenYellow CRGB::MediumSpringGreen CRGB::Silver
CRGB::CornflowerBlue CRGB::Honeydew CRGB::MediumTurquoise CRGB::SkyBlue
CRGB::Cornsilk CRGB::HotPink CRGB::MediumVioletRed CRGB::SlateBlue
CRGB::Crimson CRGB::IndianRed CRGB::MidnightBlue CRGB::SlateGray
CRGB::Cyan CRGB::Indigo CRGB::MintCream CRGB::Snow
CRGB::DarkBlue CRGB::Ivory CRGB::MistyRose CRGB::SpringGreen
CRGB::DarkCyan CRGB::Khaki CRGB::Moccasin CRGB::SteelBlue
CRGB::DarkGoldenrod CRGB::Lavender CRGB::NavajoWhite CRGB::Tan
CRGB::DarkGray CRGB::LavenderBlush CRGB::Navy CRGB::Teal
CRGB::DarkGreen CRGB::LawnGreen CRGB::OldLace CRGB::Thistle
CRGB::DarkKhaki CRGB::LemonChiffon CRGB::Olive CRGB::Tomato
CRGB::DarkMagenta CRGB::LightBlue CRGB::OliveDrab CRGB::Turquoise
CRGB::DarkOliveGreen CRGB::LightCoral CRGB::Orange CRGB::Violet
CRGB::DarkOrange CRGB::LightCyan CRGB::OrangeRed CRGB::Wheat
CRGB::DarkOrchid CRGB::LightGoldenrodYellow CRGB::Orchid CRGB::White
CRGB::DarkRed CRGB::LightGreen CRGB::PaleGoldenrod CRGB::WhiteSmoke
CRGB::DarkSalmon CRGB::LightGrey CRGB::PaleGreen CRGB::Yellow
CRGB::DarkSeaGreen CRGB::LightPink CRGB::PaleTurquoise CRGB::YellowGreen
CRGB::DarkSlateBlue CRGB::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. Ничего больше делать не нужно, выбираем плату и прошиваемся.

  • Arduino IDE вместе со всеми драйверами установить и согласно статье первые шаги с Arduino.
  • Зайти в Файл/Настройки, в самом низу “Дополнительные ссылки для менеджера плат”. Вставить строку http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать ОК
  • Инструменты/Плата/Менеджер плат… (самый первый в списке)
  • В появившемся окне в поиск вписать esp8266, выбрать esp8266 by ESP8266 Community и нажать установить
  • Теперь в списке плат (Инструменты/Плата) появится семейство плат на 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)ArduinolibrariesFastLED) и вставить в папку библиотек папку FastLED-stm32patch (из архива). Примечание: это модифицированная библиотека, можно работать с ней и дальше с остальными платами. Модификация просто добавляет корректную поддержку 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 к компьютеру и нажимаем загрузить прошивку. Всё, можно пользоваться!

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

Гайд по GyverMatrixOS
5 (100%) 18 votes

2018-12-10T17:05:00+00:00