GYVERMATRIXOS

 Arduino  Комментарии к записи GYVERMATRIXOS отключены
Янв 312019
 

• 29.12.2018 ДОБАВЛЕНА ВЕРСИЯ 1.10
• ВЕРСИЯ 1.3 И ВЫШЕ ПРОШИВКИ GYVERMATRIXOS НЕ ПОМЕЩАЕТСЯ В ARDUINO NANO СО ВСЕМИ ЭФФЕКТАМИ И РЕЖИМАМИ НА МАТРИЦЕ 16Х16! ИСПОЛЬЗУЙТЕ МАТРИЦУ МЕНЬШЕГО РАЗМЕРА ИЛИ ОТКЛЮЧАЙТЕ BLUETOOTH/ТЕКСТ/ЭФФЕКТЫ ИЛИ ИСПОЛЬЗУЙТЕ ARDUINO MEGA/ESP8266! СМ. НИЖЕ.

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

Изменения (Changelog)

  • 3 режима вывода бегущей строки
  • 6 игр с управлением по Bluetooth или кнопками
  • 18 настраиваемых эффектов
  • Вывод изображений и анимации
  • Режим часов с тремя эффектами и наложением
  • Управление по Bluetooth
  • Планируется добавить: Wi-Fi часы для esp8266 и поддержку бортового RTC для STM32

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

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

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

MATRIX_TYPE, CONNECTION_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 шт.) 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 Игра Арканоид

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

Все основные настройки

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

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()

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

Настройки обычных эффектов (Routine) — вкладка effects

Настройки полноэкранных эффектов (Noise) — вкладка noise_effects

Настройки в играх — вкладки с префиксом g_

Настройки списка режимов (вкладка custom)

Настройки часов (вкладка clock)

Настройки бегущей строки

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

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

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

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

Список цветов

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

Кнопок для управления системой всего 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.
Схемы подключения перечисленных плат можно найти на основной странице проекта.

AVR (Arduino)

Arduino IDE вместе со всеми драйверами устанавливается и настраивается согласно статье первые шаги с Arduino. Ничего больше делать не нужно, выбираем плату и прошиваемся.

esp8266 (NodeMCU, Wemos)

STM32 (Blue Pill)