День 13: Заметка 1: Arduino + Bluetooth = 💪
🤟 Хай, Кодерс!
💪 Уже пару недель, как начал эксперименты с
🎯 На текущий момент в демо видео обычно весь флоу жестко зашит в рамках основной программы. Хотелось бы влиять на ход исполнения программы из вне.
🤔 Размышляя над вариантами решения задачи взаимодействия с
👉 буду управлять
Для этих целей:
💰 закупил
🛠 собрал прототип на
🤔 Данная модель модуля может работать как
👉 Но это не беда. Значит, в мобильном приложении попробую сделать сервис и поосле первого подключения сохраню
🤟 По итогу я планирую сделать несколько игр, которые будут отрисовываться на
📷 На фото (в следующем сообщении) собранный прототипчик и сам модуль.
#Arduino
#Bluetooth
🤟 Хай, Кодерс!
💪 Уже пару недель, как начал эксперименты с
RGB матрицей и Arduino, получается интересно, но нету некоторой интерактивности. А без нее скоро будет скучно.🎯 На текущий момент в демо видео обычно весь флоу жестко зашит в рамках основной программы. Хотелось бы влиять на ход исполнения программы из вне.
🤔 Размышляя над вариантами решения задачи взаимодействия с
Arduino, я остановился на самом удобном: 👉 буду управлять
Arduino через Bluetooth из мобильного приложения.Для этих целей:
💰 закупил
bluetooth модуль HC-06; 🛠 собрал прототип на
Arduino Uno, подключился к модулю, через простой bluetooth терминал проверил работоспособность, все работает как положено: отправлял сообщение через bluetooth в Arduino, Arduino отправляла это сообщение обратно, то есть своеобразный ping отработал.🤔 Данная модель модуля может работать как
slave, то есть самостоятельно не умеет подключаться у другому устройству. 👉 Но это не беда. Значит, в мобильном приложении попробую сделать сервис и поосле первого подключения сохраню
mac адрес модуля для дальнейшего подключения из фонового сервиса. Ну это первое, что пришло в голову. Попробую так сделать.🤟 По итогу я планирую сделать несколько игр, которые будут отрисовываться на
RGB матрице, а в качестве джостика управления будет выступать мобильное приложение.📷 На фото (в следующем сообщении) собранный прототипчик и сам модуль.
#Arduino
#Bluetooth
👍1
Media is too big
VIEW IN TELEGRAM
День 14: Заметка 1: Bubble интерполятор для анимации Arduino и RGBMatrix
🤟 Хай, Кодерс!
💪 Сегодня продолжал работу над анимациям, решил реализовать
🫧
Очень наглядно это заметно на анимации расширения круга. Ее и реализовал.
💡Допустим мы хотим, чтобы круг раздулся от нулевого радиуса до
👉 в таком случае сналача он
👉 затем
👉 затем
👉
👉 и при следующей итерации
Выглядит это симпатично, на мой взгляд.
📷 Пример реализации на видео.
#Arduino
🤟 Хай, Кодерс!
💪 Сегодня продолжал работу над анимациям, решил реализовать
Bubble интерполятор.🫧
Bubble анимация представлят собой изменение целевого показателя скачкобразно.Очень наглядно это заметно на анимации расширения круга. Ее и реализовал.
💡Допустим мы хотим, чтобы круг раздулся от нулевого радиуса до
10 единиц: 👉 в таком случае сналача он
раздуется чуть больше, допустим, до 12, 👉 затем
сдуется до 8, 👉 затем
раздуется до 11, 👉
сдуется до 9 👉 и при следующей итерации
выйдет на целевой радиус в 10 . Выглядит это симпатично, на мой взгляд.
📷 Пример реализации на видео.
#Arduino
🔥2
Code Every Day 🚀
День 14: Заметка 1: Bubble интерполятор для анимации Arduino и RGBMatrix 🤟 Хай, Кодерс! 💪 Сегодня продолжал работу над анимациям, решил реализовать Bubble интерполятор. 🫧 Bubble анимация представлят собой изменение целевого показателя скачкобразно. Очень…
День 14: Заметка 2: Bubble интерполятор, детали реализации
📈 График изменения целевого параметра наглядно выглядит так, как на приложенном изображении. Также приведена функция изменения параметра.
🧑💻 Реализация интерполятора описывает формулу изменения параметра
📈 График изменения целевого параметра наглядно выглядит так, как на приложенном изображении. Также приведена функция изменения параметра.
🧑💻 Реализация интерполятора описывает формулу изменения параметра
class BubbleInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_BUBBLE;
double amplitude = 0.5;
double frequancy = 10;
virtual float calculateR(double time) {
float result = (-1 * pow(3.14, -time/amplitude) * cos(frequancy * time)) + 1;
return result;
}
};
👍1
День 14: Заметка 3: Применение Bubble интерполятора
🧑💻 Код применениия интерполятора выглядит так
🧑💻 Код применениия интерполятора выглядит так
void displayBubbles(
int x,
int y,
int radius,
float timeFrom,
float timeTo,
float timeStep
) {
uint16_t color = getColorRandom();
BubbleInterpolator interpolator = BubbleInterpolator();
for (float i = timeFrom; i <= timeTo; i += timeStep) {
//очистка ранее нарисованного круга (с прошлых итераций)
matrix.fillScreen(0);
// пробобвал очистку делать меньшей области, но, кажется, что это работает дольше
// matrix.fillCircle(
// x, y,
// (int) radius * 1.75, // примерно на глазок прикинул, что в большинстве случаев этого достаточно
// 0
// );
//вычисление отклонения радиуса в зависимости от времени отрисовки
float diffs = interpolator.calculateR(i);
int radiusResult = radius * diffs;
if (appState.isDebug()) {
String logs = String(i) + ", " + String(x) + ", " + String(radiusResult);
Serial.println(logs);
}
// отрисовка текущего состояния радиуса с учетом функции изменения интерполятора
matrix.fillCircle(
x, y,
radiusResult,
color
);
matrix.swapBuffers(false);
}
}
👍1
Code Every Day 🚀
День 14: Заметка 3: Применение Bubble интерполятора 🧑💻 Код применениия интерполятора выглядит так void displayBubbles( int x, int y, int radius, float timeFrom, float timeTo, float timeStep ) { uint16_t color = getColorRandom(); BubbleInterpolator…
👉 Для наглядности с подсветкой кода скриншот прицепил
👍1
Code Every Day 🚀
День 14: Заметка 1: Bubble интерполятор для анимации Arduino и RGBMatrix 🤟 Хай, Кодерс! 💪 Сегодня продолжал работу над анимациям, решил реализовать Bubble интерполятор. 🫧 Bubble анимация представлят собой изменение целевого показателя скачкобразно. Очень…
День 14: Заметка 4: Особенности реализации Bubble интерполятора
🤟 А теперь, 🧑💻 Кодерс, 🍒 на торте (то есть заключение).
🤔 На видео видно, будто анимация прогрывается
🤔 Кажется (не замерял), на самом деле для данного вида анимации нет трудоемких задач для контроллера, отрисовка должна проходить быстро, а, значит, плавно.
👉 В следующий раз реализую анимацию пульсации, посмотрим, будет ли там плано изменяться радиус. Скорее всего, да. Но вернемся к разбору.
👉 Тут дело в разрешении самой
Основной метод, который использовался для отрисовки анимации, это
👉 Из сигнатуры метода видно, что в качестве радиуса он принимает целое число. При очередных циклах отрисовки интерполятор при вычислении конкретного радиуса выдает разные
👉 Нет плавности. Такие дела, но и на этом спасибо, все равно воткнуть в какой-нибудь проект можно.
🤟 А теперь, 🧑💻 Кодерс, 🍒 на торте (то есть заключение).
🤔 На видео видно, будто анимация прогрывается
неплавно. Давайте разберемся в корне проблемы.🤔 Кажется (не замерял), на самом деле для данного вида анимации нет трудоемких задач для контроллера, отрисовка должна проходить быстро, а, значит, плавно.
👉 В следующий раз реализую анимацию пульсации, посмотрим, будет ли там плано изменяться радиус. Скорее всего, да. Но вернемся к разбору.
👉 Тут дело в разрешении самой
RGB матрицы, а точнее в том, что слишком низкое разрешение для отображения инфо.Основной метод, который использовался для отрисовки анимации, это
matrix.fillCircle(
int x, int y,
int radius,
uuint16_t color
);
👉 Из сигнатуры метода видно, что в качестве радиуса он принимает целое число. При очередных циклах отрисовки интерполятор при вычислении конкретного радиуса выдает разные
float значения, которые несильно отличаются друг от друга, они часто приводятся в int в одно и то же число. Поэтому при отрисовке это выглядит так, что радиус не меняется. 👉 Нет плавности. Такие дела, но и на этом спасибо, все равно воткнуть в какой-нибудь проект можно.
👍1
День 15: Заметка 1: Сила маленьких привычек - Отжимания 💪
🤟 Хай, Кодерс!
👉 Сегодня многие работают из дома, это приводит к тому, что движения стало мало.
А организму нужна нагрузка для нормальной жизни.
🏃♀️ Можно ходить в зал - это очень хороший шаг в укреплении физической формы.
🏋️♂️ Поход в зал требует времени, мотивации; иногда с этим бывает проблема.
🤔 Размышляя на эту тему, я подумал о силе маленьких привычек.
Например, если делать тренировку отжиманий от пола дома 2-3 раза в день по 3-5 подходов, то можно
укрепить мышцы, силу и выносливость. При этом ничего кроме 10 минут на тренировку не надо.
Если это сделать привычкой и так тренироваться 1, 2, 3 месяца, то можно сильно укрепить физическую форму.
💪 Главное в тренировках - это регулярность, отслеживание прогресса и увеличение нагрузки.
В таком случае такими маленькими шагами можно частично решить проблему со спортом.
👉 Чтобы отжимания проходили более плодотворно, купил простой тренажер, который позволяет делать акцент на разные группы мышц: трицепс, дельты, списну, грудь (фото в следующем сообщении).
Вообщем отжимания могут идти интереснее, можно комбинировать варианты отжиманий или менять варианты тренировок по дням.
👉 10 минут жизни можно потратить по-разному.
Можно превратить эти 10 минут в привычку делать упражнения или можно просто ничего не делать.
👉 Выбор каждый делает сам.
🔗 Купил доску для отжиманий здесь, может кому-то будет полезным.
#Life
🤟 Хай, Кодерс!
👉 Сегодня многие работают из дома, это приводит к тому, что движения стало мало.
А организму нужна нагрузка для нормальной жизни.
🏃♀️ Можно ходить в зал - это очень хороший шаг в укреплении физической формы.
🏋️♂️ Поход в зал требует времени, мотивации; иногда с этим бывает проблема.
🤔 Размышляя на эту тему, я подумал о силе маленьких привычек.
Например, если делать тренировку отжиманий от пола дома 2-3 раза в день по 3-5 подходов, то можно
укрепить мышцы, силу и выносливость. При этом ничего кроме 10 минут на тренировку не надо.
Если это сделать привычкой и так тренироваться 1, 2, 3 месяца, то можно сильно укрепить физическую форму.
💪 Главное в тренировках - это регулярность, отслеживание прогресса и увеличение нагрузки.
В таком случае такими маленькими шагами можно частично решить проблему со спортом.
👉 Чтобы отжимания проходили более плодотворно, купил простой тренажер, который позволяет делать акцент на разные группы мышц: трицепс, дельты, списну, грудь (фото в следующем сообщении).
Вообщем отжимания могут идти интереснее, можно комбинировать варианты отжиманий или менять варианты тренировок по дням.
👉 10 минут жизни можно потратить по-разному.
Можно превратить эти 10 минут в привычку делать упражнения или можно просто ничего не делать.
👉 Выбор каждый делает сам.
🔗 Купил доску для отжиманий здесь, может кому-то будет полезным.
#Life
www.ozon.ru
Упор для отжиманий - купить на OZON
Упор для отжиманий - купить в интернет-магазине OZON по выгодным ценам! Характеристики ✔ Фото ✔ Огромный ассортимент ✔ Настоящие отзывы покупателей!
👍1
Media is too big
VIEW IN TELEGRAM
День 16: Заметка 1: Solar System ☀️
🤟 Хай, Кодерс!
🤔 Сегодня утром подумал, что нужно срочно запрограммировать солнечную систему.
😎 Вы меня знаете. Сказано-сделано.
🎯 Итак, наша цель сделать анимацию солнечной системы ☀️, что для этого надо:
👉 создаем земной шар, подкрашиваем его в голубой цвет
👉 перемещаем Землю на свою орбиту в начальную точку
👉 создаем Солнце, то есть шар бОльшего радиуса, подкрашиваем в желтый
🤔 Это было
Что дальше? Вот:
👉 начинаем вращать Землю по своей орбите, да, задачка посложнее, тут нужна тригонометрия из школы, но она есть у меня!
👉 иногда подсвечиваем орбиту Земли, чтобы было наглядно, получается неплохо
👉 а что насчет Луны? она есть у меня тоже: создаем Луну рядом с Землей, подкрашиваем, начинаем вращать вокруг Земли и не забываем перемещать ее вслед за Землей, фух, справились, кажись!
👉 🍒 на торте: рандомно в пределах
😎 Занавес.
#Arduino
🤟 Хай, Кодерс!
🤔 Сегодня утром подумал, что нужно срочно запрограммировать солнечную систему.
😎 Вы меня знаете. Сказано-сделано.
🎯 Итак, наша цель сделать анимацию солнечной системы ☀️, что для этого надо:
👉 создаем земной шар, подкрашиваем его в голубой цвет
👉 перемещаем Землю на свою орбиту в начальную точку
👉 создаем Солнце, то есть шар бОльшего радиуса, подкрашиваем в желтый
🤔 Это было
easy, скажете вы, и я покорно приму это! Что дальше? Вот:
👉 начинаем вращать Землю по своей орбите, да, задачка посложнее, тут нужна тригонометрия из школы, но она есть у меня!
👉 иногда подсвечиваем орбиту Земли, чтобы было наглядно, получается неплохо
👉 а что насчет Луны? она есть у меня тоже: создаем Луну рядом с Землей, подкрашиваем, начинаем вращать вокруг Земли и не забываем перемещать ее вслед за Землей, фух, справились, кажись!
👉 🍒 на торте: рандомно в пределах
RGB матрицы рисуем звезды - подкрашиваем пиксели.😎 Занавес.
#Arduino
🔥1
День 17: Заметка 1: Синдром самозванца
🎯 Сегодня хотел бы подсветить такой феномен как
Это такая штука, которая выражается в неуверенности в своих силах и достижениях, хотя повода для этого не должно быть, так как успехи в работе и учебе есть.
Часто люди, склонные к синдрому самозванца, могут:
👉 обесценивать проделанную работу
👉 думать о том, что настоящая работа где-то там, а то, чем они занимаются, - легко, и каждый сможет это сделать
👉 приписывать все успехи случаю, удаче, стечению обстоятельств
Такой образ мысли приводит к тому, что:
👉 человек ощущает себя обманщиком или самозванцем, ему может казаться, что окружающие думают о нем именно так
👉 в какой-то момент может возникнуть ощущение, что вот-вот кто-то разоблачит его, скажет, что он занимает не то место.
У разработчиков, например, это может выражаться так.
Мобильный разработчик может переживать из-за того, что он целый день решает простые задачи по верстке: двигает кнопки, перекрашивает их, ему начинает казаться, что это очень просто, а вот кто-то работает в крупной корпорации, пишет фреймворки, библиотеки, которые решают сложные прикладные задачи.
Как с этим бороться?
Я бы сформулировал несколько принципов:
👉 любая работа достойная, и ее кто-то должен делать, даже если вам кажется, что она простая, скорее всего это не так: я 100 раз видел, как люди из другой сферы пытались быстро освоить простые вещи из разработки и 100 раз замечал, как это не получается так легко, как я это предполагал.
👉 осознание этого психологического феномена в какой-то степени приносит спокойствие, рассуждать надо так: ну да, есть ощущение, что где-то что-то недотягиваю, но это не обнуляет весь мой опыт; просто надо составить план по освоению этого материала и работать в своем темпе над этим.
👉 изучения опыта других людей, которых вы считаете крутыми специалистами, общение с ними поможет понять, что все люди и ничего сверхественного нет, все достижимо.
👉 также не нужно зацикливаться на этом, работа есть и ладно, сделал, что должен и на сегодня все, должно быть хобби для отвлечения
Вообщем если подытожить, синдром замозванца - это одна из разновидностей неуверенности в себе, все способы повышения уверенности тоже будут работать.
Ваш накопленный опыт - это уже большое достижение, эта мысль должна быть основой для укрепления веры в себя.
#Life
🎯 Сегодня хотел бы подсветить такой феномен как
синдром самозванца. Это такая штука, которая выражается в неуверенности в своих силах и достижениях, хотя повода для этого не должно быть, так как успехи в работе и учебе есть.
Часто люди, склонные к синдрому самозванца, могут:
👉 обесценивать проделанную работу
👉 думать о том, что настоящая работа где-то там, а то, чем они занимаются, - легко, и каждый сможет это сделать
👉 приписывать все успехи случаю, удаче, стечению обстоятельств
Такой образ мысли приводит к тому, что:
👉 человек ощущает себя обманщиком или самозванцем, ему может казаться, что окружающие думают о нем именно так
👉 в какой-то момент может возникнуть ощущение, что вот-вот кто-то разоблачит его, скажет, что он занимает не то место.
У разработчиков, например, это может выражаться так.
Мобильный разработчик может переживать из-за того, что он целый день решает простые задачи по верстке: двигает кнопки, перекрашивает их, ему начинает казаться, что это очень просто, а вот кто-то работает в крупной корпорации, пишет фреймворки, библиотеки, которые решают сложные прикладные задачи.
Как с этим бороться?
Я бы сформулировал несколько принципов:
👉 любая работа достойная, и ее кто-то должен делать, даже если вам кажется, что она простая, скорее всего это не так: я 100 раз видел, как люди из другой сферы пытались быстро освоить простые вещи из разработки и 100 раз замечал, как это не получается так легко, как я это предполагал.
👉 осознание этого психологического феномена в какой-то степени приносит спокойствие, рассуждать надо так: ну да, есть ощущение, что где-то что-то недотягиваю, но это не обнуляет весь мой опыт; просто надо составить план по освоению этого материала и работать в своем темпе над этим.
👉 изучения опыта других людей, которых вы считаете крутыми специалистами, общение с ними поможет понять, что все люди и ничего сверхественного нет, все достижимо.
👉 также не нужно зацикливаться на этом, работа есть и ладно, сделал, что должен и на сегодня все, должно быть хобби для отвлечения
Вообщем если подытожить, синдром замозванца - это одна из разновидностей неуверенности в себе, все способы повышения уверенности тоже будут работать.
Ваш накопленный опыт - это уже большое достижение, эта мысль должна быть основой для укрепления веры в себя.
#Life
👍1🔥1
Media is too big
VIEW IN TELEGRAM
День 18: Заметка 1: Moving Objects 2 - более наглядное применение интерполяторов
🤟 Хай, Кодерс!
Как-то я показывал применение интерполяторов для движения объектов:
👉 линейный
👉 с ускорением
👉 скачущий
👉 и bubble
В прошлый ряз демо
👉 шарики двигаются в переделах ширины экрана панели
👉 есть финиш - белая линия, на которой движение шариков должно прекратиться
Детально по шарикам:
👉 1 шарик: применен линейный интерполятор, поэтому он двигается равномерно.
👉 2 шарик: применен интерполятор с ускорением, его скорость нарастает
👉 3 шарик: движется со скачущим интерполятором, поэтому происходит имитация соударения со стенкой и угасающие отскоки
👉 4 шарик: движется с bubble интерполятором, он заходит за финиш и возвращается, амплитуда гаснет, и он останаливается на финише
👉 5 шарик: движется с ускорением до определенного момента и затем с замедлением
📷 Пример на видео
#Arduino
🤟 Хай, Кодерс!
Как-то я показывал применение интерполяторов для движения объектов:
👉 линейный
👉 с ускорением
👉 скачущий
👉 и bubble
В прошлый ряз демо
Moving Objects было ненаглядным, в этот раз я доработал его до более привлекательного вида:👉 шарики двигаются в переделах ширины экрана панели
👉 есть финиш - белая линия, на которой движение шариков должно прекратиться
Детально по шарикам:
👉 1 шарик: применен линейный интерполятор, поэтому он двигается равномерно.
👉 2 шарик: применен интерполятор с ускорением, его скорость нарастает
👉 3 шарик: движется со скачущим интерполятором, поэтому происходит имитация соударения со стенкой и угасающие отскоки
👉 4 шарик: движется с bubble интерполятором, он заходит за финиш и возвращается, амплитуда гаснет, и он останаливается на финише
👉 5 шарик: движется с ускорением до определенного момента и затем с замедлением
📷 Пример на видео
#Arduino
🔥1
День 18: Заметка 2: AccelerateDecelerate интерполятор
На видео выше 5 шарик движется с ускорением до определенного момента и затем с замедлением.
Для этого в файл с интерполяторами дописал новую реализацию, которая использует формулу
#Arduino
На видео выше 5 шарик движется с ускорением до определенного момента и затем с замедлением.
Для этого в файл с интерполяторами дописал новую реализацию, которая использует формулу
y = cos((time+1)π)/2+0.5
class AccelerateDecelerateInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_ACCELERATE_DECELERATE;
float a = 0.5;
float b = 2;
virtual float calculate(double time) {
return cos((time + 1) * 3.14)/b + a;
}
};
#Arduino
👍1