0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|||||||||||
[Радиокружок] Пятиканальная гирлянда на ATtiny13A24.01.2017, 17:02. Показов 15773. Ответов 59
Метки нет Все метки)
(
Есть придуманная и разработанная нашим радиокружком железка "5-канальный контроллер новогодних гирлянд" на основе микроконтроллера ATtiny13A.
Плата для производства, контроллеры сверху[URL="#" onClick="return false;"> images/icon_plus_1.gif" onClick="return false;[/URL] Пример детского кода
Всю ночь не спал и придумывал свой алгоритм "сжатия" и разборки значений массива, который (алгоритм) мне хотя бы по силам понять. И (вдруг!), может, даже самому написать. Придумал вот что. Мне требуется выводить в порт uint8, причём значащими являются 5 младших разрядов, а 3 старших не используются. Для кодирования эффектов можно использовать одномерный массив из (ARRAY_SIZE) uint16. Каждый uint16 в нём будет состоять из 15 "полезных" разрядов и 1 старшего разряда "шлака". Тогда бесполезный расход памяти составит 1/16 от массива - хороший результат для меня как программиста. :) Кодирую в одном uint16 три "мига", каждый из которых состоит из своей "пенты" (точки для наглядности, они разделяют "пенты"): 0b0.00100.00010.00001 Теперь пытаюсь описать алгоритм "разборки". Для этого надо бы уметь преобразовывать uint16 в два uint8, но я об этом пока даже не читал:
0
|
24.01.2017, 17:02 | |
Ответы с готовыми решениями:
59
Гирлянда Гирлянда |
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
||||||
24.01.2017, 17:59 | ||||||
0
|
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 49
|
||||||
24.01.2017, 20:19 | ||||||
C авром дел не имел, но может такое подойдет:
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 322
|
|
24.01.2017, 22:17 | |
Представляю, что было бы, если бы демки для старых 8-ми битных компьютеров писались бы в подобном стиле :)
На мой взгляд, надо категорически отбросить идею wav подобной записи и подумать над интересными формулами, дающими красивые эффекты путем изменения коэффициентов. Для начала - хотя бы 5 разночастотных синусов с изменяемой частотой, может и по случайному порядку. Пилу можно попробовать. Что то типа калейдоскопа и т.д.
0
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|
24.01.2017, 22:28 | |
Ну, мужики, слюнки текут это попробовать.
По обоим вариантам масса вопросов (например, непонятны в обоих случаях хранение "мигов"), но сегодня надо спать, завтра весь день в командировке в Краснодар, вечером вернусь - сил не останется на вопросы, а вот в пятницу поговорим. И я бесконечно благодарен вам за участие. ![]() Каналов мало. Самое красивое - когда жёсткий и очевидный детерминизм. Типа "вот один огонёк пробежал, вот два, вот три, вот четыре, вот тень туда же пробежала, вот две тени, вот три, вот четыре, вот всё погасло, вот всё загорелось, всё помигало, и теперь такая же волна побежала в другую сторону". Формулы не нужны, описывается вручную за минуту, красота - почти на все 5. Конечно, скучновато, если смотреть долго, но вполне твёрдая оценка "красиво".
0
|
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
|
|
24.01.2017, 22:42 | |
Когда сформулируешь, что значит "красиво", тогда можно будет и в формулу загнать.
На одном сайте пытались сформулировать. Мое определение: "Красота - это середина между регулярностью и хаосом". Регулярность создать легко. Хаос тоже. Надо как-то смешать эти две крайности - и получится красота.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
|
25.01.2017, 19:49 | |
Убираем TINY13, ставим TINY85, делаем программные таймеры. Придумываем эффекты. Каждый эффект - функция. Пишем таблицу, где элементы указатели на функции-эффекты. Если требуется, для эффекта создается доп таблица эффектов.
По таймеру переключаем функции. Если учите детей, то не учите решать задачи тупо в лоб. Как у вас. Это не программа, а просто тупо список последовательности действий. И еще. Дети сами потом научаться оптимизировать. Не берите МК с заведомо скудными ресурсами. Пусть лучше с запасом будет. Зато и потом интереснее будет впаковать проект в мелкий МК.
0
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|
26.01.2017, 11:29 | |
Ну что ж, начнём с кода div.
![]() 0b0100000100000100, 0b0000100000100000 }; static const uint8_t N = sizeof(DATA)/sizeof(DATA[0]); Это вы задали массив и посчитали его размер, чтобы самим пальчиком не считать? Дальше я вроде как понимаю, что делается (сам такого пока бы ни в жисть не написал). Так что доберусь до дома - попробую. Перед пробой ещё надо в экселе сделать себе "перекодировщик" с пятиразрядного описания каналов в uint16. ![]() Про детей не думайте - они даже описание частоты ядра в коде не очень понимают ("нулей что-то очень много"). Остальное для них - вообще нигия. Зато концепцию нулей и единиц, а также совмещение гирлянд и этих значений поняли сразу. И могут САМИ кодить эффекты.
0
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|||||||||||
26.01.2017, 11:53 | |||||||||||
Структура GSTATES и сам массив эффектов где и как хранятся? Эффекты можно хранить и адресовать uintами 8/16/32/64. Я в условиях задачи выбрал "типа оптимальные" uint16. А ваши "0b10000" я не понимаю. Я бы их понял, если бы увидел, что эта запись для удобства программирования (тогда эксель как перекодировщик не нужен), а запрограммированное таким образом хранится в памяти сплошным битовым потоком (физически разделённым на какие-то uintы). Но я не вижу (напоминаю, я не программист от слова "совсем") этого. Да и логически полагаю, если бы вы предложили "битовый поток", то не писали бы "0b" в коде, а написали бы просто
Кароче, слюна у меня уже течёт, но где колбаса - ещё не понимаю.
0
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|
26.01.2017, 12:01 | |
![]() ![]() ![]()
0
|
0 / 0 / 0
Регистрация: 30.04.2015
Сообщений: 721
|
|
26.01.2017, 12:20 | |
А что такое "5-ти канальная гирлянда" ?
Это бегущие огни или RGB диммер ? Для красивого оформления визуальных цветосветовых композиций на основе светодиодов используют "одноканальный" ведущий логический протокол DMX512 на электрическом интерфейсе RS485 с распределёнными ведомыми RGB диммерами или приводами прожекторов посмотри http://www.hoelscher-hi.de/hen... alyzer.htm там и конструкции и исходники программ для AVR (для новых AVR надо будет в исходниках править таблицу прерываний из-за добавлений новых функций для новых АТМег) эффекты... что подскажет ваша фантазия в зависимости от выбранного конструктива: ёлка (конус), круг на потолке, квадрат малевича или композиция на стене, ... https://www.youtube.som/watch?v=NkrTTz-bZBM
0
|
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 49
|
||||||
26.01.2017, 15:26 | ||||||
![]()
0<<15 | 0b10000 <<10 | 0b01000<<5 | 0b00100, хотя честно говоря не помню порядок следования значений, но в этом и преимущество битовых полей, чтобы не забивать голову сдвигами и другими логическими операциями, компилятор все сделает сам. Три значения, также для удобства, чтобы визуально отделить группы, а не пересчитывать на глаз. Собственно по сути код является практически полным аналогом div за исключением развернутого цикла. Не вижу смысла использовать циклы на маленьких/определенных значениях размера массива, тем более компилятор скорее всего сам развернет.
0
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|
26.01.2017, 16:32 | |
![]() Это либо бегущие огни в одной гирлянде, либо 5 гирлянд (по 1 на каждый канал), развешанных последовательно "на ковре". Будет красиво. Я пробовал 4 гирлянды "на ковре" (лучами как от солнышка) в режиме исключительно "бегущих огней" - красиво. А когда эффектов будет больше - будет ещё красивее. Тем более дети сами будут программить свои эффекты.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
|
26.01.2017, 17:27 | |
Влидимир, вот и не затрудняйте задачу заведомо мелким мк. Это вам, может быть, в удовольствие, посидеть лишний часик, порелаксировать, оптимизируя программу и ловя кайф с процесса. Проект будут дети писать. И представьте, программа может выйти работоспособной, но она тупо здоровая и не влазит в мелкий мк.
Берите ATMEGA8535 в DIP корпусе. Цанговую панельку. Такой корпус паять гораздо проще.
0
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 1,304
|
|
26.01.2017, 17:58 | |
![]() Мне уже не нужно ни больше места для массива, ни больше места для программы обработки массива. И ножек/каналов мне больше не нужно, т.к. даже 5 гирлянд выделить на одно устройство - это может быть проблемой, не у каждого дома есть столько.
0
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
26.01.2017, 18:31 | |
![]() У AVR гарвардская архитектура, объявление const для хранения данных в памяти программ недостаточно. ОЗУ в тини13 всего 64 байта.
0
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
26.01.2017, 19:32 | |
126,89 руб досточка на STM32F030F4P6
https://ru.otyexpress.som/item/MK00335- ... 0.0.C9utlt Диоды ws2812b по 6 р. https://ru.otyexpress.som/item/free-shi ... 8758228bf3 Вуаля. http://www.youtube.som/watch?v=7LhttfF-OV0 На видео камень 103, но я портировал библиотечку под STM32F030F4P6, могу поделиться.
0
|
26.01.2017, 19:32 | ||||||
Помогаю со студенческими работами здесь
20
attiny13a Attiny13a Гирлянда на stm32 Перегоревшая Гирлянда Задача: Гирлянда Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Форматирование строк в Python
py-thonny 15.04.2025
Форматирование строк — одна из тех базовых возможностей Python, которые сопровождают разработчика каждый день. Эта задача кажется тривиальной на первый взгляд, но на самом деле представляет собой. . .
|
Слайсы в Go
golander 15.04.2025
Слайсы — важнейшая структура данных в Go, значение которой сложно переоценить. С момента создания языка разработчики Go позиционировали слайсы как основной механизм для работы с последовательностями. . .
|
Как использовать Behavior Graph в Unity при создании игрового AI
GameUnited 14.04.2025
Искусственный интеллект в играх прошел долгий путь эволюции. От простейших алгоритмов, движущих призраками в Pac-Man, до сложных систем, управляющих поведением персонажей в современных AAA-проектах. . . .
|
Создание и стилизация списков в SwiftUI
mobDevWorks 14.04.2025
Списки — фундаментальный элемент мобильных интерфейсов. От списка контактов до ленты новостей, от настроек до каталога товаров — трудно представить приложение, которое не использовало бы этот. . .
|
Паттерн SAGA и распределённые транзакции в микросервисной архитектуре
stackOverflow 14.04.2025
Переход от монолитной архитектуры к микросервисам принес множество преимуществ: гибкость разработки, независимость развертывания и масштабирования отдельных компонентов. Однако этот переход создал и. . .
|
Кастомные аллокаторы в C++ и оптимизация управления памятью
bytestream 14.04.2025
Работа с памятью в С++ всегда была и остаётся одной из самых увлекательных и сложных задач для программиста. Любой опытный C++ разработчик подтвердит: стандартные механизмы аллокации памяти – штука. . .
|
Организация сетей в Kubernetes и эффективное развертывание
Mr. Docker 14.04.2025
Сетевая инфраструктура Kubernetes представляет собой сложную, но хорошо спроектированную систему, которая позволяет контейнерам взаимодействовать между собой и с внешним миром. За кажущейся простотой. . .
|
Многопоточность в Rust: Fearless concurrency и практические примеры
golander 14.04.2025
Многопоточное программирование связано с рядом известных проблем. Наиболее распространенные из них — гонки данных (data races), взаимные блокировки (deadlocks) и условия гонки (race conditions). Эти. . .
|
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
|
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
|