Arduino головного мозга
152 subscribers
89 photos
153 videos
58 files
133 links
Arduino проекты, Arduino UNO, Arduino NANO, ESP8266, ESP32
Download Telegram
Media is too big
VIEW IN TELEGRAM
😈 "Опять двадцать пять! ..."

🐷 Ну и куда же теперь без RayCast'а то. Вот только один нюанс, я проверил что будет если исключить вычисления с плавающей точкой. И как результат, на экране больше чем был, вычисления занимаю меньше времени ( пока ещё конечно не так красиво, но потенциал есть).
И это одновременно и хорошо, и грусно.

  Теперь есть цель переписать алгоритм основного движка rayCasta...

p.s. 🎚 "И зачем год назад кого-то послушал про модуль FPU на ESP32" ...

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥2🤯1👾1
Media is too big
VIEW IN TELEGRAM
😈 "Играйтесь, да не заигрывайтесь! ..."

🤩 Нормальные текстуры, немного управления, освещение да и хватит наверное
🐷 Думаю как просто эффект для рамки с него хватит. Максимум лёгкую логику рандомного перемещения добавить.
⚡️ Лучше потом на основном рейкасте этим методом ФПС поднять...

И появились ещё две темы для эффектов, это:
Игра жизнь
Фракталы

А так же ещё две прошивки, для
ESP32 CYD3248 двух версий
На подходе ещё модуль CYD2432S024

🤩 Но, на этой неделе всё...
Семья, дача, немытая ягода, горшки...

p.s. 🎮 Но, игра продолжается...

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1🥰1👾1
TFT_Lamp [ ver 0.2.014 ].rar
1.7 MB
🤩 "Стало ещё горячее!!!"


🗄 В архиве:
💻 - Прошивка для CYD3224S028
💻 - Симулятор на ПК
◼️ - И 3D модель корпуса для печати

⚙️ Программа для прошивки ESP

⭕️ Небольшой шортс -> youTube

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🤩1
Media is too big
VIEW IN TELEGRAM
🧑‍💻 "Работать негры, солнце ещё высоко!..."

🤩 Вырвал немного времени на своё любимое дело...

▶️ В принципе всё объяснил в ролике, описывать нечего...
А в кратце:
- ⚠️ Доделал шум Перлина
- 👩‍💻 Добавил шум Воронова
- 😈 Добавил текстур к RayCast'у
- 🚶 Добавил случайные перемещения по миру RayCast'а
- ⚠️ Начал мастерить огонь

👨‍💻 Для других CYD, пока нет. Но планируется...

А эти ещё в планах...
  Игра жизнь
  Фракталы

📂 Кто хочет скачать, протестировать, берём постом выше.

[ 🔥 youTube ]

p.s. 🎮 "До связи.... Пока всё..."

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🥰1🤯1👾1
🧑‍💻 "0x5f3759df..."

🤩 Заинтересовало меня магическое число Джона Кармака, ну..., точнее его способ быстрого вычисления корней. А действительно ли это ускоряет расчёты?, ведь в моих проектах это очень важно. Расчётов расстояний между двумя точками на каждой второй строчке кода прописаны. Ну а раз такое дело, то назрел эксперимент: сравнить быстродействие и погрешность между стандартной sqrt( x ) и вариантами pow( x, 0.5 ), алгоритмом Кармака и целочисленным алгоритмом isqrt_bitwis(х).

📈 Вот алгоритм быстрого вычисления обратного корня:
float fast_sqrt( float val ) {
if ( val <= 0.0 ){ return 0; }

float xhalf = 0.5 * val;
int i = *(int*)&val;
i = 0x5f3759df - (i >> 1);
val = *(float*)&i;
val = val*(1.5f-(xhalf*val*val));

return val;
}


📈 Алгоритм вычисления u32 корня:
uint32_t isqrt_bitwise(uint32_t x) {
uint32_t root = 0;
uint32_t bit = 1u << 30;

while (bit > x) bit >>= 2;

while (bit){
uint32_t trial = root + bit;
if (x >= trial) {
x -= trial;
root = (root >> 1) + bit;
} else {
root >>= 1;
}
bit >>= 2;
}
return root;
}


🧮 А дальше всё просто, в цикле прогоняю 65535 раз вычисления расстояния от разных аргументов dx и dy, и замеряю время
calc_time = micros();
for i= от 0 до 0xffff {
dx = i&0xff
dy = (i»8)&0xff
res_sqr = функция( dx*dx+dy*dy )
}
calc_time = micros() - calc_time;

и в calc_time получаю время затраченное на вычисления.

🧮 Потом делаю упор на точность по формуле:
err += ( 1.0 - test_root(x) / sqrt(x) )
err = err*100.0/0xfffe
И получаю погрешность по всему циклу вычислений, ну и результат такой:
//--------------------------------
sqrt(): 266 334 us
pow( x, 0.5 ): 303 142 us
fast_sqrt(x): 2 470 us
isqrt_bitwise(x): 44 464 us
//--------------------------------
pow( x, 0.5 ): 0.00%
fast_sqrt: 0.09%
isqrt_bitwise: 0.31%
//--------------------------------


🧐 Вывод: ускорение в вычислениях в 100раз, хоть и работа с float, но результат на лицо. Не ожидал что целочисленная функция покажет себя такой долгой, ну, как есть...
Пока всё...

p.s. 👍 "Делаю часы, скоро покажу..."

[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥2🤯1🤓1
TFT_Lamp [ ver 0.03.021 ].rar
1.8 MB
🤩 "Теперь с часами!!!"


🗄 В архиве:
💻 - Прошивка для CYD3224S028
💻 - Симулятор на ПК
◼️ - И 3D модель корпуса для печати

⚙️ Программа для прошивки ESP

[ ⬇️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1👏1👾1
Media is too big
VIEW IN TELEGRAM
⌚️ "А время не подскажете?..."

Разного рода часики готовы, но пока без ВайФая, сейчас усиленно придумаю как этот ваш ВиФи туды прикрутить... 🧑‍💻

🔥 [ Shorts ]
📂 [ Cкачать ]

p.s. 🕐 "Пять, десять, пятнадцать минут пятого..."

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1🥰1🤩1👾1
Media is too big
VIEW IN TELEGRAM
🧰  "Пиксели, пиксели... Воксели!!!"

  Неделя закончена... 🧑‍💻
По мелочи добавил разных скинов на часы, но главное попалась технология rayCast для симуляторов - Воксельная графика.
И небольшой симулятор в стиле игры 1992 года - Comanche.
Пока средненько, но я только начал...

🔥 [ Shorts ]

p.s. 🕐 "Пока выкладывать рано, допилю и выложу..."

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1👍1👏1🤯1🕊1
Media is too big
VIEW IN TELEGRAM
🚁  "Что за птица, железная!!!"

🧑‍💻 Немного допилил визуал симулятора вертолёта, уже гораздо лучше.
  Полюбому мелкие текстурки на землю. И какой никакой смысл этого всего,например поиск потерявшихся людей и летать от одного к другому.

🔥 [ Shorts ]
▶️ [ Небольшая хронология ]

p.s. 🕐 "А пока выходные..."

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1👍1🥰1👾1
Media is too big
VIEW IN TELEGRAM
Немного текстур на поверхность, наклоны от поворотов...
Всё, отдыхать...
🔥3❤1👍1🥰1👏1👾1
TFT_Lamp [ ver 0.05.064 ].rar
2.8 MB
🌟 "Эх, прокачу!!!"


🗄 В архиве:
💻 - Прошивка для CYD3224S028
💻 - Симулятор на ПК
◼️ - И 3D модель корпуса для печати

⚙️ Программа для прошивки ESP

[ ⬇️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1👾1
Media is too big
VIEW IN TELEGRAM
🚁 "Спасатели вперёд!!!"

🧑‍💻 Плюс ещё одна игровая технология разобрана и, плюс ещё один эффект в мой 'CyberDeck'.

Представляю 'Спасательный вертолёт'

Суть происходящего это полёты по местности и спасение потерявшихся человечков. Вертолёт автономный и летит к целевой точке, сам определяет угол отклонения, сканирует рельеф перед собой, и при воздействии на рычаги управления откликается поворотами фюзеляжа.
Поворачиваем в сторону, значит крен на бок, нужно набрать или сбавить скорость - значит опустится или задерётся нос.

Всё построено на базе несложного автомата:
- Поиск цели - случайный выбор места потерявшегося.
- Взлёт - Набор высоты
- Полёт - Продвижение и поворот к цели ( до момента сближения )
- Торможение - Сброс скорости и разворот
- Посадка - Сброс высоты, приземление
- Спасение - Ожидаем пока цель придёт в вертолёт, и по новой. Поиск цели

Но самое сложное было разобраться с очередной технологией рендера '3D мира' по 2D карте.
Принцип прост, из картинки с высотами ( а у меня это шум Перлина ), по координатам игрока определяем какие высоты находятся перед игроком.
Затем от горизонта вниз рисуем столбики высот делённые на расстояние.

В принципе от технологии Wolfenstein3D не особо отличается, но со своими нюансами, типа наклона в бок.

В общем в архиве как прошивка для CYD2432_S028, так и симулятор для ПК.

📂 [ Cкачать ]

🔥 [ Shorts ]
▶️ [ YouTube ]

p.s. 🤔 "Чё-б, ещё поделать?..."

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1👍1👏1👾1
Media is too big
VIEW IN TELEGRAM
🚁"Налягай на весло!!!"

🧑‍💻 Не понравилась мне производительность вертолёта. Ресурсов жрёт много, а кадров мало. Пришлось немного покопался в коде, и нашёл неоптимальность:

Ландшафт строится как ряд картонных стенок, от точки взгляда, в даль. И вот таких 'в даль' 100 выборок. А если учесть что эти 100 выборок для каждого столбца, коих 120 штук, то и получаем:
120х100 = 12000 выборок для ландшафта.
Каждая точка это шум Перлина, что тоже нагружает бедную ЕСПэшку...
Так вот, а зачем под носом у игрока, 120 выборок, на маленькую ширину. Да и на расстоянии 5-10 шагов от точки взгляда тоже столько не нужно.
В общем оптимизировал по принципу, чем дальше, тем больше.
А под носом и трёх четырёх хватит, которые равномерно размазывпются на всю ширину экрана.
И вуаля, к шуму перлина уже меньше тысячи обращений, и 30фпс в кармане 🥳.

А дальше? Очередная головная боль. Воксельная графика потихоньку перерастает в полигоны... Но об этом чуть позже

p.s. 😱 "Придумал себе на безтолковку, что ещё поделать..."

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥2👍1👏1🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
Немного спойлеров...
Ой, если оно на ЕСПшке заведётся...😁
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🤓1👨‍💻1
Наткнулся на ресурс HobbySupport, он иногда собирает проекты людей и проводит конкурс.

Ну, а чем я хуже, решил тоже поучавствовать.

В общем, если интересно посмотрите, там с десяток различных, интересных проектов, в том числе и мой rayCast.
Если что, под номером 7️⃣.

Голосование проходит тут:
https://t.me/hobbysupport
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🎡 "Карусель, карусель... "

🧑‍💻 Вроде почти всё готово, и точки найдены в пространстве, и пересчитаны на экране, и линии ограничивающие сектора, но вот чего я не ожидал, что запнусь об растеризацию полигона.
Вроде задача то не сложная, в границах линий закрасить цветом, а вот не всё так просто. Делать миллион пповерок на факт нахождения внутри или снаружи это бред, это сразу мимо. Тем более зная координаты вершин. По вершинам, с лёту, тоже не получится. В общем сижу, думаю...

p.s. 😱 "Придумал же себе на безтолковку..."

[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1🥰1👏1👾1
This media is not supported in your browser
VIEW IN TELEGRAM
🌏 "Сейчас бы на пляж... "

🧑‍💻 Растеризацию поправил, пока знаю про две проблемы:
1. Не все полигоны захватываются, это видно по краям.
2. Точки, оказавшиеся за спиной, не правильно пересчитываются на экран.

Ну чтож, и не с таким справлялись.

p.s. 😅 "Да и пора бы на ESP это запускать..."

[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2👏1😁1👾1
This media is not supported in your browser
VIEW IN TELEGRAM
🌏 "It's alive... "

🧑‍💻 Перенос движка поверхности с ПК на ESP32 похоже закончился успехом.
Плюсы - всё работает в 30фпс..
Минусы - дальность так себе,всего 20 клеток. При дальности в 25, уже фпс падает до 20,при 30 - 15. Ну чтож, не зря в Silent Hill придумали туман 😶‍🌫...
 

p.s. 🤔 "Чего-б такого этому всему теперь придумать..."

[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏2❤1🥰1🤯1👾1
This media is not supported in your browser
VIEW IN TELEGRAM
Первый способ добавить ФеПеСов, это уменьшить угол обзора.
Меньше точек собираются слева и права. Но и видимость сокращается.
Копаю дальше...
🔥2❤1👍1👏1
Media is too big
VIEW IN TELEGRAM
☕️ "Утро начинается не с кофе..."

🧑‍💻 А началось с замеров времени на разные части кода, и вот что выяснилось...
Но, всё по порядку.

Весь алгоритм построения делится на несколько этапов:
1. Определение области обзора
2. Сбор вершин внутри области
3. Фильтрация от случайно продублированных
4. Сбор полигонов из вершин
5. Перенос вершин из декартовых координат в радиальные
6. Растеризация полигонов с учётом перекрытий
И вот по третьему пункту выявилась проблема, анализ и выброс лишних точек ( дублей ) занимает аж более 35мс. Поправить конечно это одно, и оно ускорилось в три раза до 12мс. Но мысль появилась другая, что проблема ещё раньше, в алгоритме сбора точек, что при сборе загребаются те что уже есть. Значить копать нужно ещё раньше...

p.s. 🤓 "Ну что-ж, 'наши руки не для скуки'..."


Попробовал сделать чат ->
Ссылка на чат 😝

[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
🔥2👍1🎉1
Media is too big
VIEW IN TELEGRAM
Утро, как обычно доброе. Но не для ESP'шки 😂.
40 фпс, с запасом по таймингам, вот с этим уже можно работать...

Поправить пару глитчей, и можно пробовать 'травку засеять, да волны по воде погонять'.
А так, поле для фантазии, го тут можно...
И туман, и дождь, и снег...
Вроде есть мысди про 3Д домики, короче ещё есть куда копать...


[ ⏮️ ][ ⬆️ ][ ⏭️ ]
[ 💬 чат ]
[ VK-видео ][ YouTube ][ RuTube ]
🏠 [ Домой ] 🛠 [ Проекты ]
🔥2👍1🤯1🤣1👾1