🛠 День 1: Заметка 2: Прототип устройства для управления RGB панелью
Давно думал о том, чтобы по тренироваться в программировании Arduino.
👉 Хорошо бы набить руку, чтобы в случае необходимости, можно было оперативно сделать прототип нужного устройства.
Думал, какой бы проект подобрать, чтобы был интересным, полезным и как-то мог пригодиться.
В итоге остановился на таком проекте:
Первая задача была:
💰 купить комлектующие:
- Arduino Mega 2560
- RGB полноцветный светодиодный модуль
- Набор проводов "папа-папа"
- Блок питания
- Сетевой двухжильный шнур
🛠 собрать все по инструкции, то есть подключить шлейф от RGB матрицы к Arduino, также к матрице подключить блок питания:
- статья от Амперки, которую брал за основу для изучения данной темы
- хорошая статья
👨💻 написать код для проверки работы панели
- прежде чем начинать программировать необходимо будет в менеджере библиотек Arduino IDE подключить необходимые зависимости для работы RGB матрицей RGBmatrixPanel, Adafruit_BusIO, Adafruit GFX.
🚀 В итоге на фото/видео (в следующем сообщении) представлен собранный прототип устройства.
А в качестве первой программы решил собрать вместе два примера работы:
- отображается текст
- периодически фраза сменяется анимацией летающих шариков по панели.
#Arduino
#RGBMatrix
Давно думал о том, чтобы по тренироваться в программировании Arduino.
👉 Хорошо бы набить руку, чтобы в случае необходимости, можно было оперативно сделать прототип нужного устройства.
Думал, какой бы проект подобрать, чтобы был интересным, полезным и как-то мог пригодиться.
В итоге остановился на таком проекте:
Управление RGB Led панелью с помощью Arduino Mega 2560. Первая задача была:
💰 купить комлектующие:
- Arduino Mega 2560
- RGB полноцветный светодиодный модуль
- Набор проводов "папа-папа"
- Блок питания
- Сетевой двухжильный шнур
🛠 собрать все по инструкции, то есть подключить шлейф от RGB матрицы к Arduino, также к матрице подключить блок питания:
- статья от Амперки, которую брал за основу для изучения данной темы
- хорошая статья
👨💻 написать код для проверки работы панели
- прежде чем начинать программировать необходимо будет в менеджере библиотек Arduino IDE подключить необходимые зависимости для работы RGB матрицей RGBmatrixPanel, Adafruit_BusIO, Adafruit GFX.
🚀 В итоге на фото/видео (в следующем сообщении) представлен собранный прототип устройства.
А в качестве первой программы решил собрать вместе два примера работы:
- отображается текст
Code Every Day, при этом буквы во фразе Every Day подсвечиваются разными цветами; - периодически фраза сменяется анимацией летающих шариков по панели.
#Arduino
#RGBMatrix
OZON
Макетная плата USB MEGA 2560 R3 (ATmega2560-16AU CH340G), для Arduino - купить с доставкой по выгодным ценам в интернет-магазине…
Макетная плата USB MEGA 2560 R3 (ATmega2560-16AU CH340G), для Arduino купить в интернет-магазине OZON по низким ценам! Бесплатная доставка🚚 ✔Фото ✔Скидки ✔Рассрочка и настоящие отзывы (789442432)
👍4
День 3: Заметка 1: Разбор как программировать Arduino для работы с RGB матрицей
Всем привет!
🧑💻 Урок с разбором:
👉 как подключить зависимость
👉 как подготовить код для работы rgb матрицей
👉 перекраска панели в разные цвета, тест на битые пиксели
📷 К посту приложено два видео:
👉 первое - пример lifecoding с комментариями по ходу дела
👉 второе - результат работы
#Arduino
#RGBMatrix
#LifeCoding
Всем привет!
🧑💻 Урок с разбором:
👉 как подключить зависимость
Adafruit GFX Library к проекту👉 как подготовить код для работы rgb матрицей
👉 перекраска панели в разные цвета, тест на битые пиксели
📷 К посту приложено два видео:
👉 первое - пример lifecoding с комментариями по ходу дела
👉 второе - результат работы
#Arduino
#RGBMatrix
#LifeCoding
👍1
День 5: Заметка 1: Таймер обратного отсчета на Arduino с выводом на RGB панель
🤚 Всем привет!
Давайте сегодня посмотрим, как можно создать счетчик обратного отсчета в
👨💻 Для этого напишем небольшую программу, мы рассмотрим методы для работы с текстом экземпляра
👉 Пусть у нас перменная для хранения экземляра
Как мы разобрали в прошлом уроке:
👉
Для вывода текста на экран нам будет достаточно использовать следующие функции:
👉
👉
👉
👉
Вцелом этого будет достаточно.
В методе
Заводим переменную, которая будет хранить текущее состояние счетчика
В методе
Теперь добавим вывод значения переменной на матрицу, в каждом цикле надо добавить очистку экрана, в противном случае выводимый текст
будет накладываться на тот текст, который был выведен в прошлый раз.
По идее на этом все, но есть одна проблема, если счетчик дойдет до нуля, он станет отрицательным в следующем цикле.
Давайте подправим это, то есть если таймер дошел до нуля, то пусть нуль и выводится.
Можно немного улучшить код, выделив логику смены состояния счетчика и работы с текстом в отдельные методы:
В итоге метод
📷 Пример работы на видео (в следующем сообщении)
📷 Также пример написания кода в отдельном видео(в следующем сообщении), в конце я забыл добавить метод
В приложеном файле программы с видео он есть.
#Arduino
#RGBMatrix
#LifeCoding
🤚 Всем привет!
Давайте сегодня посмотрим, как можно создать счетчик обратного отсчета в
Arduino с выводом на RBG панель.👨💻 Для этого напишем небольшую программу, мы рассмотрим методы для работы с текстом экземпляра
RGBmatrixPanel👉 Пусть у нас перменная для хранения экземляра
RGBmatrixPanel называется matrix.Как мы разобрали в прошлом уроке:
👉
matrix.Color333(int r, int g, int b) - это функция, которая описывает цвет в формате RGB, она нам сегодня пригодиться, так как мы будем подкрашивать цифры счетчика в нужный нам цвет.Для вывода текста на экран нам будет достаточно использовать следующие функции:
👉
matrix.setTextColor(matrix.Color333(r, g, b)); - указываем, какого цвета будет текст👉
matrix.setCursor(int x, int y); - указывается начальная координата текста (верхний левый угол)👉
matrix.print(string text); - выводим текст 👉
matrix.setTextSize(int size); - указывает размер текста, size изменяется [1, 8], причем символ размером 1 занимает 8 на 5 пикселей на матрице.Вцелом этого будет достаточно.
В методе
setup() подготавливаем матрицу
void setup() {
matrix.begin();
}
Заводим переменную, которая будет хранить текущее состояние счетчика
int count = 10;
В методе
loop() уменьшаем значение на единицу с задержкой в 1 секунду
void loop() {
count = count - 1;
delay(1000);
}
Теперь добавим вывод значения переменной на матрицу, в каждом цикле надо добавить очистку экрана, в противном случае выводимый текст
будет накладываться на тот текст, который был выведен в прошлый раз.
void loop() {
//очистка экрана от текста, который был показан ранее
matrix.fillScreen(0);
//вывод на экран состояния счетчика
matrix.setTextColor(matrix.Color333(7, 0, 0));
matrix.setCursor(27, 13);
matrix.print(counter);
matrix.swapBuffers(false);
//уменьшение счетчика на единицу
count = count - 1;
delay(1000);
}
По идее на этом все, но есть одна проблема, если счетчик дойдет до нуля, он станет отрицательным в следующем цикле.
Давайте подправим это, то есть если таймер дошел до нуля, то пусть нуль и выводится.
void loop() {
//уменьшение счетчка на единицу
if (count > 0) {
count = count - 1;
}
delay(1000);
}
Можно немного улучшить код, выделив логику смены состояния счетчика и работы с текстом в отдельные методы:
void changeState() {
if (count > 0) {
count = count - 1;
}
}
void printCounter() {
printText(String(count));
}
void printText(string value) {
//очистка экрана от текста, который был показан ранее
matrix.fillScreen(0);
//вывод на экран состояния счетчика
matrix.setTextColor(matrix.Color333(7, 0, 0));
matrix.setCursor(27, 13);
matrix.print(value);
}
В итоге метод
loop():
void loop() {
printCounter();
changeState();
}
📷 Пример работы на видео (в следующем сообщении)
📷 Также пример написания кода в отдельном видео(в следующем сообщении), в конце я забыл добавить метод
matrix.swapBuffers(false), просто поторопился =). В приложеном файле программы с видео он есть.
#Arduino
#RGBMatrix
#LifeCoding
👍2
День 5: Заметка 5: сколько символов можно вывести на RGB панели
🎯Решил посмотреть, а сколько вообще символов можно разместить на
Получается, вот такая картина:
👉 при самом малом размере текста
👉 всего панель может вместить
Итого имеем
Надо признать, что особо не разгуляешься, но жить можно с этим.
Библитека для работы с
Пример программы, которая выводит результат как на фото
#Arduino
#RGBMatrix
🎯Решил посмотреть, а сколько вообще символов можно разместить на
RGB панели p4 32x64 256мм x128мм 1/16SПолучается, вот такая картина:
👉 при самом малом размере текста
matrix.setTextSize(1); в строке всего помечается 10 символов👉 всего панель может вместить
4 таких строкиИтого имеем
40 символов за раз можно вывести при самом малом шрифте.Надо признать, что особо не разгуляешься, но жить можно с этим.
Библитека для работы с
RGBmatrixPanel имеет метод matrix.setTextWrap(bool), который позволяет переносить текст на другую строку.Пример программы, которая выводит результат как на фото
void setup() {
matrix.begin();
}
String text = "1234567890abcdefghiklmnopqrstuvwxyz1234567890";
void loop() {
matrix.fillScreen(0);
matrix.setTextColor(matrix.Color333(7, 0, 0));
matrix.setCursor(0, 0);
matrix.setTextSize(1);
matrix.setTextWrap(true);
matrix.print(text);
matrix.swapBuffers(false);
}
#Arduino
#RGBMatrix
👍2
Media is too big
VIEW IN TELEGRAM
День 6: Заметка 1: Эффект печати текста при выводе на RGB матрицу
Всем привет!
👉 Давайте сегодня рассмотрим код посимвольного вывода на матрицу текста,
будет выглядеть как эффект печати текста.
Фактически, все, что было разобрано в прошлых постах, будет переиспользовано здесь.
Мы будем также использовать функции
👉
👉
Но уже для кажого символа строки в отдельности.
Символы будем перебирать в цикле
Получилось так как на видео.
Попозже на канал
Код проекта прикладываю в следующем сообщении.
#Arduino
#RGBMatrix
Всем привет!
👉 Давайте сегодня рассмотрим код посимвольного вывода на матрицу текста,
будет выглядеть как эффект печати текста.
Фактически, все, что было разобрано в прошлых постах, будет переиспользовано здесь.
Мы будем также использовать функции
RGBmatrixPanel:👉
print(string text)👉
swapBuffers(bool value)Но уже для кажого символа строки в отдельности.
Символы будем перебирать в цикле
forПолучилось так как на видео.
Попозже на канал
Youtube и Rutube выложу life coding сессию.Код проекта прикладываю в следующем сообщении.
#Arduino
#RGBMatrix
👍1🔥1
Media is too big
VIEW IN TELEGRAM
День 7: Заметка 1: Реализация работы инфо табло на Arduino
Всем привет!
Реализовал вывод информации как в инфо табло.
🎯 Хотелось достичь следующего эффекта: на инфо табло есть множество ячеек с разными буквами, в каждой ячейке подбирается нужная буква из слова, в результате, получилось интересно.
В качестве слова для вывода использовал
Алгоритм разработал простой:
👉 в каждой ячейке в случайном порядке подбирается символ
👉 каждый случайный символ отрисовывается с пониженной яркостью и насыщенностью
👉 считается количество циклов отрисовки
👉 после достижения определенного порога по циклам отрисовки на нужном месте появляются буквы из выводимой фразы, причем у каждой буквы свой порог появления
👉 когда слово/фраза целиком собрана, у ее символов меняем насыщенность и яркость, чтобы они выделялись красочно на общем табло
👉 после достижения последнего порога по циклам подкрашиваем фразу в брендированный цвет.
#Arduino
#RGBMatrix
Всем привет!
Реализовал вывод информации как в инфо табло.
🎯 Хотелось достичь следующего эффекта: на инфо табло есть множество ячеек с разными буквами, в каждой ячейке подбирается нужная буква из слова, в результате, получилось интересно.
В качестве слова для вывода использовал
K45P3R5KY, оно как раз подходило под вывод в рамках одной строки.Алгоритм разработал простой:
👉 в каждой ячейке в случайном порядке подбирается символ
👉 каждый случайный символ отрисовывается с пониженной яркостью и насыщенностью
👉 считается количество циклов отрисовки
👉 после достижения определенного порога по циклам отрисовки на нужном месте появляются буквы из выводимой фразы, причем у каждой буквы свой порог появления
👉 когда слово/фраза целиком собрана, у ее символов меняем насыщенность и яркость, чтобы они выделялись красочно на общем табло
👉 после достижения последнего порога по циклам подкрашиваем фразу в брендированный цвет.
#Arduino
#RGBMatrix
👍2🔥1
День 8: Заметка 1: Выводим изображения на RDB матрицу с помощью Arduino
Всем привет!
Двигаемся дальше в работе с
🎯 Давайте сегодня попробуем вывести на панели изображение.
🤔 На самом деле задача не совсем простая, при работе с другими
👉 В данном случае просто так передать файл изображения не получится, такой абстракции нет в рамках контроллера. Контроллер понимает примитивные штуки. Поэтому надо изображение представить ввиде массива для отрисовки каждого пикселя.
👉 Хранить в оперативной памяти массив - идея так себе, дело в том, что у контроллера обычно опертивной памяти немного, лучше будет если содержимое массива будем хранить константой во флеш памяти, то есть в памяти программ, ее обычно в разы больше. Ну в любом случае можно изучить спецификацию контроллера, чтобы понять, какой памяти больше.
👉 В библиотеке для работы с матрицей
В прошлом сообщении я рисовал прототипы для логотипа идеи лейблов для кружек
👉 Лучше всего будет если пропорции изображения будут совпадать с пропорциями панели.
👉 Кстати, массивы, описывающие изображения, имеют внушительный размер, чтобы не загромождать код, я их вынес в отдельный файл, который затем подключил к основному файлу программы.
📷 На видео собрал рабочий прототип (в следубщем сообщении).
#Arduino
#RGBMatrix
Всем привет!
Двигаемся дальше в работе с
Arduino и RGB матрицей.🎯 Давайте сегодня попробуем вывести на панели изображение.
🤔 На самом деле задача не совсем простая, при работе с другими
SDK на любых языках зачастую у нас есть метод, которому на вход передаем файл изображения, всю логику по отображению делает sdk и методы отрисовки предусмотренные в ОС платформы.👉 В данном случае просто так передать файл изображения не получится, такой абстракции нет в рамках контроллера. Контроллер понимает примитивные штуки. Поэтому надо изображение представить ввиде массива для отрисовки каждого пикселя.
👉 Хранить в оперативной памяти массив - идея так себе, дело в том, что у контроллера обычно опертивной памяти немного, лучше будет если содержимое массива будем хранить константой во флеш памяти, то есть в памяти программ, ее обычно в разы больше. Ну в любом случае можно изучить спецификацию контроллера, чтобы понять, какой памяти больше.
👉 В библиотеке для работы с матрицей
RGBmatrixPanel уже есть встроенный метод для вывода изображения как массива байтов, его и будем использовать:drawRGBBitmap(0, 0, (const uint16_t *)<array name>, 64, 32);В прошлом сообщении я рисовал прототипы для логотипа идеи лейблов для кружек
Coffee To Code. Это было неслучайно, это была подготовка к сегодняшнему коду, то есть эти изображения я и буду выводить на RGB матрицу. 👉 Лучше всего будет если пропорции изображения будут совпадать с пропорциями панели.
👉 Кстати, массивы, описывающие изображения, имеют внушительный размер, чтобы не загромождать код, я их вынес в отдельный файл, который затем подключил к основному файлу программы.
📷 На видео собрал рабочий прототип (в следубщем сообщении).
#Arduino
#RGBMatrix
👍1
День 9: Заметка 1: Анимация загрузки на RGB матрице с Arduino
🤚Всем привет!
В прошлом сообщении я описал процесс работы с изображениями, соответственно, теперь можно легко делать различные анимации.
🎯 В любом проекте можно встретить задачу отображения прогресса выполнения длительной операции, например, загрузка данных.
На момент загрузки обычно показывают прогресс бар, который может быть круговым (обычно это крутилка в центре экрана) или линейным.
✏️ Вчера я отрисовал всю необходимую графику, чтобы реализовать линейный прогресс бар.
🤟 Получилось как и все на
Алгорим следующий:
👉 готовим графические изображения для анимации, конвертируем их в Си массивы данных;
👉 графические изображения должны собой представлять набор последовательно изменяющихся картинок, мы их будем отрисовывать друг за другом, чтобы визуально добавить некоторую динамику;
👉 в коде приложения для Arduino пишем метод, который будет в цикле пробегать по этому массиву изображений и выводить каждую из картинок на экран.
По расходованию памяти этот вариант накладный. Все-таки во флеш памяти приходится держать все изображения. Есть ли варианты избежать этого? Да, но об этом в другой раз.
📷 Пример на видео (в следующем сообщении).
#Arduino
#RGBMatrix
🤚Всем привет!
В прошлом сообщении я описал процесс работы с изображениями, соответственно, теперь можно легко делать различные анимации.
🎯 В любом проекте можно встретить задачу отображения прогресса выполнения длительной операции, например, загрузка данных.
На момент загрузки обычно показывают прогресс бар, который может быть круговым (обычно это крутилка в центре экрана) или линейным.
✏️ Вчера я отрисовал всю необходимую графику, чтобы реализовать линейный прогресс бар.
🤟 Получилось как и все на
RGB матрице oldschool -но, но в этом есть свой шарм. Лично мне нравится.Алгорим следующий:
👉 готовим графические изображения для анимации, конвертируем их в Си массивы данных;
👉 графические изображения должны собой представлять набор последовательно изменяющихся картинок, мы их будем отрисовывать друг за другом, чтобы визуально добавить некоторую динамику;
👉 в коде приложения для Arduino пишем метод, который будет в цикле пробегать по этому массиву изображений и выводить каждую из картинок на экран.
По расходованию памяти этот вариант накладный. Все-таки во флеш памяти приходится держать все изображения. Есть ли варианты избежать этого? Да, но об этом в другой раз.
📷 Пример на видео (в следующем сообщении).
#Arduino
#RGBMatrix
👍1
Media is too big
VIEW IN TELEGRAM
День 10: Заметка 1: reveal circular анимация для RGB матрицы
🤟 Хай, Кодерс!
👉 Сегодня хотел показать пример реализации
Реализовать данный вид анимации не составляет труда.
👉 В основе реализации лежит использование метода отрисовки и заливки круга из библиотеки для работы с
По-моему, выглядит симпатично.
📷 Пример на видео.
#Arduino
#RGBMatrix
🤟 Хай, Кодерс!
👉 Сегодня хотел показать пример реализации
reveal circular анимации заливки.Реализовать данный вид анимации не составляет труда.
👉 В основе реализации лежит использование метода отрисовки и заливки круга из библиотеки для работы с
RGB матрицей RGBmatrixPanel drawCircle(int x, int y, int r, uint16_t color);.По-моему, выглядит симпатично.
📷 Пример на видео.
#Arduino
#RGBMatrix
🔥1
Code Every Day 🚀
День 10: Заметка 1: reveal circular анимация для RGB матрицы 🤟 Хай, Кодерс! 👉 Сегодня хотел показать пример реализации reveal circular анимации заливки. Реализовать данный вид анимации не составляет труда. 👉 В основе реализации лежит использование метода…
День 11: Заметка 1: Код примера reveal circular анимации
👨💻Код примера
#Arduino
#RGBMatrix
👨💻Код примера
// тип анимации
class Direction {
public:
static const int TYPE_OUT = 0;
static const int TYPE_IN = 1;
static bool isTypeIn(int value) {
return value == Direction::TYPE_IN;
}
static bool isTypeOut(int value) {
return value == Direction::TYPE_OUT;
}
};
// логика анимации
void revealCircular(
int x, int y, // координаты центар
int r, // радиус заливки круга
int direction, // 0 - расширение, 1 - сужение
uint16_t color
) {
if (Direction::isTypeOut(direction)) {
for (int i = 0; i < r; ++i) {
drawCircle(x, y, i, color);
}
} else if (Direction::isTypeIn(direction)) {
for (int i = r; i > 0; --i) {
drawCircle(x, y, i, color);
}
}
}
// вывод на матрицу круга
void drawCircle(
int x, int y,
int r,
uint16_t color
) {
matrix->drawCircle(x, y, r, color);
matrix->swapBuffers(true);
}
#Arduino
#RGBMatrix
❤1
Media is too big
VIEW IN TELEGRAM
День 11: Заметка 2: Перемещение объектов на RGB матрице, интерполяторы
🤟 Хай, Кодерс!
👉 Сегодня утром проснулся и подумал, что сегодня отличный день, чтобы рисовать точки.
😎 Сказано-сделано!
🎯 Для будущих проектов потребуется перемещать объекты на
👉
Описывается формулой
👉
Описывается формулой
👉
Описывается формулой
👉
Эмулирует скачки, как будто мяч скачет
Размера матрицы не хватило, чтобы наглядно продемонстрировать динамику изменения положения точек.
🤔 Поработаю еще над этим.
#Arduino
#RGBMatrix
🤟 Хай, Кодерс!
👉 Сегодня утром проснулся и подумал, что сегодня отличный день, чтобы рисовать точки.
😎 Сказано-сделано!
🎯 Для будущих проектов потребуется перемещать объекты на
RGB панели, например, в играх. Нужно набросать прототип перемещения точек. Помимо этого для реалистичности движения решил реализовать интерполяторы, хотя бы самые распространные.👉
LinearInterpolatorОписывается формулой
x = t, t - время👉
AccelerateInterpolatorОписывается формулой
x = t^(2f), добавляет ускорение перемещению👉
DecelerateInterpolatorОписывается формулой
x = 1 – (1 – t)^(2f), добавляет замедление перемещению👉
BounceInterpolatorЭмулирует скачки, как будто мяч скачет
Размера матрицы не хватило, чтобы наглядно продемонстрировать динамику изменения положения точек.
🤔 Поработаю еще над этим.
#Arduino
#RGBMatrix
👍2
День 12: Заметка 1: Пример кода интерполяторов
🤟Хай, Кодерс!
Сегодня приводил код, который отвечает за перемещение объектов на RGB матрице в порядок, чтобы было удобно с этим работать.
В итоге основные моменты программы опишу в рамках отдельных сообщений. Похоже, что получиться дичь, но так как программировать надо каждый день, а больше я ничего не успел сделать за сегодня, то приведу что есть.
Сами интерполяторы выделелил в базовый класс, с возможностью переопределения методов рассчета координат:
#Arduino
#RGBMatrix
🤟Хай, Кодерс!
Сегодня приводил код, который отвечает за перемещение объектов на RGB матрице в порядок, чтобы было удобно с этим работать.
В итоге основные моменты программы опишу в рамках отдельных сообщений. Похоже, что получиться дичь, но так как программировать надо каждый день, а больше я ничего не успел сделать за сегодня, то приведу что есть.
Сами интерполяторы выделелил в базовый класс, с возможностью переопределения методов рассчета координат:
class Interpolator {
public:
static const int TYPE_CONSTANT = 1;
static const int TYPE_LINEAR = 2;
static const int TYPE_ACCELERATE = 3;
static const int TYPE_BOUNCE = 4;
public:
int type = Interpolator::TYPE_CONSTANT;
virtual int calculateX(double time) { return 1; }
virtual int calculateY(double time) { return 1; }
};
class LinearInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_LINEAR;
virtual int calculateX(double time) { return time; }
};
class AccelerateInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_ACCELERATE;
virtual int calculateX(double time) {
return (int) pow(time, 2 * 0.8);
}
};
class BounceInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_BOUNCE;
virtual int calculateX(double time) {
double result = 0;
if (time < 0.31489) {
result = 8 * pow(1.1226 * time, 2);
} else if (0.31489 <= time && time < 0.65990) {
result = 8 * pow(1.1226 * time - 0.54719, 2) + 0.7;
} else if (0.65990 <= time && time < 0.85908) {
result = 8 * pow(1.1226 * time - 0.85260, 2) + 0.9;
} else if (0.85908 <= time) {
result = 8 * pow(1.1226 * time - 1.04350, 2) + 0.95;
}
return (int) result;
}
};
#Arduino
#RGBMatrix
👍1