Attiny13A проекты: Дайджест о микроконтроллере Attiny13 — Информация, описание, справочник и проекты на микроконтроллере Attiny13

Содержание

Дайджест о микроконтроллере Attiny13 — Информация, описание, справочник и проекты на микроконтроллере Attiny13

Эта секция даташита описывает, какие виды памяти есть в микроконтроллере. Архитектура AVR имеет два основных пространства памяти: память данных и память программ. А также есть раздел EEPROM для данных. Все три типа памяти линейные и регулярные (что бы это ни значило). In-System Reprogrammable Flash Program Memory (Внутрисистемная пере-программируемая флэш-память). Микроконтроллер ATtiny13A содержит 1 килобайт памяти-на-чипе… Читать далее »

Потребовалось восстановить работоспособность детской игрушки. Функционал очень простой — по нажатию кнопки начинают играть светодиоды. Проходит несколько секунд и игрушка выключается. И так до следующего нажатия на кнопку. Выключателя нет — часовые батарейки-«таблетки» в количестве трех штук питают устройство непрерывно, а родной неизвестный китайский контроллер, залитый каплей компаунда, больше не работает. Как видите, очень просто… Читать далее »

Метки: led, powerdown, прерывания, проект, сон

Годы назад усилители звука были довольно громоздкими и требовали к себе определенного внимания. Надо было следить за перегрузками, уровнем стереобаланса и так далее. В помощь пользователям применялись различные индикаторы, чаще всего — стрелочные. Автор следующего проекта решил вспомнить детский восторг от прослушивания музыки с усилителем, на котором был установлен сдвоенный стрелочный индикатор. Конструктор пробовал применять… Читать далее »

Метки: аналог, звук, индикатор

Наверняка вы хотя бы раз попадали под струю автоматического ароматизатора в туалете. Это не самое приятное ощущение, учитывая концентрацию ароматического вещества. Автор следующей статьи задумался, как бы сделать так, чтобы ароматизатор срабатывал только без присутствия человека.

При этом чтобы не менять корпус фабричного устройства и не использовать дополнительные источники питания. В качестве датчика присутствия применён… Читать далее »

Метки: проект, таймер

Блуждая по иностранным площадкам, нашел новогодний сувенир. Не зря самое простое, с чего начинают изучение микроконтроллеров — это пример blink. «Подёргать ногами» микроконтроллера — одна из важнейших возможностей. В проекте новогодней снежинки автор подошел к делу комплексно, и даже заказал печатные платы на стороне. Суть его устройства в том, что под управлением Attiny13 с прошивкой,… Читать далее »

Метки: led, игрушка, проект

Давно подмечено, что экспериментируя с умным домом, люди в первую очередь стремятся автоматизировать включение освещения. Иногда для этих целей подходит датчик движения (объемный или PIR или инфракрасный), но я на своем опыте убедился, что у него есть ряд недостатков.

Datasheet датчика пишет, что он точно определяет человека в поле зрения 5 метров. Однако в моём… Читать далее »

Метки: 2313, датчик, проект, сонар, ультразвук

Копошась на интересных сайтах и форумах, я нашел универсальный проект инфракрасного локатора. Его можно применять, как самостоятельное решение, а также для периферии какого-то более крупного проекта. Суть проекта в наличии ИК-светодиода и ИК-приёмника. Луч светодиода светит либо прямо на приёмник, либо на какую-то поверхность, удалённую до одного метра, и в зависимости от обнаружения отражений микроконтроллер… Читать далее »

Метки: IR, локатор, проект, сигнализация

Следующая схема показалась мне простой и полезной, потому что микроконтроллер Attiny 2313 решает там сразу несколько задач. Кто из автолюбителей не знает, как бывает грустно, если забудешь выключить фары, потом придешь, а машина уже не заводится? Так вот, параллельно с оповещением водителя звуковым сигналом, описываемое устройство позволяет, реализовать «вежливое освещение салона» — плавное затухание и… Читать далее »

Метки: авто, освещение, проект, сигнализация

Как оказалось, влезать в тему создания устройств с использованием микроконтроллеров надо с нескольких направлений. Я сначала не хотел ввязываться в Ардуино, а потом попробовал, и мне даже понравилось. В каких-то ситуацих можно быстро и просто программировать в среде Arduino IDE, загружая прошивки в Attiny. Безусловно, памяти это съедает много. Библиотеки и методы компиляции для одного… Читать далее »

Метки: ардуино, книги, полезное, ссылки, форум

Охрана имущества — одна из основных задач, делегированных электронным приборам. Сигнализацию, конечно, можно купить готовую. Сейчас их продается много и стоят они не дорого, однако если вы на этом сайте, и тем более, читаете эту статью, значит, решили сделать себе охранную систему самостоятельно. Бороздя просторы сайтов с проектами, я нашел интересный проект простой универсальной сигнализации… Читать далее »

Метки: GSM, датчик движения, проект, сигнализация, фонарь

Использование цветовых пространств в ATTiny13a для WS2811 / Хабр


Моя новая идея посвящена использованию цветовых пространств в микроконтроллерах.


То что моя новость кому-то таковой не покажется, я нисколько не удивлюсь.
Однако я предлагаю метод и его реализацию, подобных которому я не встречал.

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

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

Но благодаря моему небольшому опыту работы дизайнером, я имею знания и о других пространствах, что натолкнуло меня на мысли о HSL и HSV. Изобретать новое смысла не было, реализаций полно нужно, лишь поискать… но я так и не нашел. Нет, я конечно нашел много интересных решений, и многие из них были Вашими, представленными прямо здесь, на Хабре, и за что я всем Вам бесконечно благодарен, Вы дали пищу для ума.

В итоге было решено остановиться на HSL, исключив из него одну компоненту S (Saturation), оставив ее константной (так как в реализации ЦДУ, этот параметр лишний), а контроллер решил использовать ATMega8U.

Набросав код и испытав прошивку, я понял что чего-то не хватает. И не хватило мне маленького несоответствия реалу.
Каждый охотник желает знать… И вновь я возвращаюсь к этому вопросу, и вновь осознаю, что нет его…
Нет оранжевого цвета в природе, как ни крути, он всего лишь оттенок.

Это и стало корнем и стержнем моей идеи, благодаря чему я полностью переписал код и придумал метод использования компактного описания цветового пространства, причем это уже совсем не HSL, HSV и не RGB, потому что я расширил диапазон оранжевого и вынес его в отдельный пространственный сектор.


Пространство можно представить как поверхность цилиндра в случае если оно замкнуто, с расположенными в углах, смещенными на 60 градусов базовыми цветами, между которыми заполнено градиентными переходами от одного базового цвета к другому:

Где высота цилиндра — это яркость, которая так же является составляющей градиента оттенков.
То же самое пространство представляет прямоугольник со сторонами «A x B», где «А» это угол определяющий базовый цвет и его оттенок, а «B» — яркость, в случае если пространство не замкнуто или развернуто из цилиндра.

Для поставленной задачи я решил использовать квадрат со стороной 256 х 256, тем самым уложившись в тип байт, где для угла, значения изменяются в пределах 0..255 (байт), а яркость: -127..127 (знаковый байт), благодаря этому получил возможность использования 8-ми базовых цветов и 32 градаций оттенков для каждого.

Пространство описывается как массив с RGB — компонентами базовых цветов, а градиенты оттенков рассчитываются на лету.


Пример описания:

{0,128,0}, {64,128,0}, {128,128,0}, {128,0,0}, {128,0,128}, {0,0,128}, {0,128,128}, {0,128,0}

здесь описана последовательность базовых цветов, назовем ее просто — радуга, где порядок компонент изменен согласно даташиту ws2811 (GRB), а последний — красный цвет, служит для замыкания пространства, выглядит это так:

Теперь, если взять некоторый индекс цвета, например 183, то можно сделать его отображение в пространство RGB таким образом:
Индекс базового цвета = 183 / 32 = 5 (синий, или {0,0,128})
Смещение оттенка = 183 % 32 = 23
Теперь вычисляем разницу между компонентами полученного базового цвета ({0,0,128}) и следующего за ним {0,128,128}, чтобы вычислить приращение (назовем его дельтой):

dG = 0 - 0 = 0,   dR = 128 - 0 = 128,   dB = 128 - 128 = 0;

Так как между цветами 32 градации, необходимо выполнить разбиение разности компонент:

dG= 0 / 32 = 0,   dR= 128 / 32 = 4,   dB= 0 / 32 = 0;

Теперь необходимо полученную дельту домножить на смещение оттенка и прибавить к компонентам текущего базового цвета ({0,0,128}):

G = 0 + 0 * 23 = 0,   R = 0 + 4 * 23 = 92,     B = 128 + 0 * 23 = 128;

Получили {0,92,128}, к которому теперь можно прибавить яркость, например 50: {50,142,178} — искомый цвет.

Как видно из примера, ничего сложного нет. В случае если дельта принимает отрицательное значение, то смещение оттенка при умножении даёт отрицательное дополнение, которое в сумме даст разность с конечной компонентой, это произойдет в случае, когда компонента градиента идет на спад.

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

Таким образом полученное пространство дает возможность использования 256 * 256 = 65536 оттенков.

Весь описанный метод был оптимизирован, устранены все умножения и деления, и приведен под упрощенную быструю математику, позволяет легко переписать его на ассемблер (лично меня скорость абсолютно устраивает: 200 ns между расчетами компонент для 7-и светодиодов), если нужна оптимизация для уменьшения размера кода.
В результате, первоначальное решение об использовании ATMega8u было отменено в пользу тиньки, так как полученная прошивка заняла меньше половины килобайта.

Нет, я не жлоб, я просто ленивый.

Итак, код ниже, выполняет инициализации, и содержит функцию вывода данных на линию ws2811:

А это код основного цикла и функция преобразования индекса пространства в цветовые составляющие с примером использования:

А вот видео с демонстрацией работы (правда цвета далеки от реальности):

Описывать подробней комментариев в тексте смысла нет, сам метод уже описан выше. Если есть вопросы, задавайте.

Ну вот, собственно, и все, что я хотел рассказать.


Давайте теперь на секунду представим, как можно использовать данный метод. Как вам, например, такое пространство, которое показано на этой картинке:

Правильно! Можно описывать разные цвета и градиенты между ними. И кто вначале описания решил что метод не позволяет использовать оттенки серого — не прав.

Массив, описывающий в памяти пространство, занимает 32 байта (из-за выравнивания), который хранится в программной памяти. Если создать несколько таких описаний пространств, и переключаться между ними на ходу, переключая указатель на массив, то можно выбирать текущее пространство для каждого нового светодиода в очереди, а так же позволяет расширить число градаций между оттенками. И если слегка модифицировать код, и увеличить число ступеней в описании компонент до 8-ми, то 32*8 даст 256 (в моем коде 3 ступени), то использование семи массивов (0..255 красный, желтый, зеленый, голубой, синий, фиолетовый, белый) дают комбинацию в 16m оттенков «одновременно на экране»! При использовании 224 байт прошивки для хранения. А если еще немного по-потеть и чуть переписать код, то можно уложиться и в 96 байт с тем же результатом.

Плюс, благодаря оптимизации и полученной скорости обработки, можно использовать так называемый метод дизеринга ((англ. dither от старо-английского didderen — дрожать) С помощью чего, можно добиться еще большего числа оттенков (только задумайтесь: 512*512*512=134.217.728). Так же это позволяет создавать замыкания пространств друг на друга, чтобы устранить или сделать невидимыми эффекты перехода. В общем, все предложенное может быть модифицировано как Вашей душе угодно, на Ваш вкус и цвет, а может использоваться как есть, и удовольствие я Вам гарантирую!

26.02.2015: Предлагаю для скачивания исходный код в безвозмездное пользование.

27.02.2015: Доступна обновленная версия кода v1.2
Изменения такие:
1. Базовый цвет кодируется битами одного байта: 0bxxGGRRBB, массив уменьшился до 8-и байт.
2. Изменена функция преобразования в соответствии п.1., код стал немного больше (20-30 байт)
В перспективе планирую еще изменения, кому интересно — не пропустите!

28.02.2015: Последнее обновление кода до версии v2.0
Изменения:
1. Добавлена работа с подпространствами, введено пространство 8×8 (раздельный выбор 65536 оттенков для подпространств с переключением)

2. Добавлен пример выбора цветового подпространства (в демонстрационном примере идет переключение на следующее подпространство, при достижении нижнего порога яркости)

3. Размер кода еще вырос до 626 байт (64 байт — само пространство + 16 байт на указатели, итого — 80 байт, остальное — код примера: 188 байт). Таким образом доступно более 500 байт дополнительного кода для организации программы эффектов.
4. Немного оптимизирован код.
5. Профилирование не выполнялось.

ИТОГ: 5 свободных ног тиньки, позволяют применить несколько раздельных каналов для независимого отображения на линиях ws2811 цветовых эффектов, и реализовать управление ими через аппаратный ввод, либо в автоматическом режиме. Реализованный буфер (14 светодиодов) позволяет использовать линию светодиодов кратную этому числу, и передавать данные в следующую секцию, повтором передачи буфера.

Больше обновлений в этом направлении не будет, будем считать алгоритм законченным, хотя идеи кажутся неисчерпаемыми. Предлагаю Вам самостоятельно развивать разработки в этом направлении.
Например: можно реализовать плавную смену цветовых подпространств (телепортация), изменить алгоритм управления яркостью на корректный, ввести параметр насыщенности цвета, и многое другое, чего здесь не хватает.
Удачных всем изысков и свершений, с наступающей весной!

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

Использование в коммерческих проектах, перепродажа исходного кода, использование с целью наживы и любых корыстных целях, запрещено. Исходные тексты распространяются бесплатно как есть, в случае использования на других сайтах, либо в других источниках, указание автора и уведомление о размещении — обязательно.

attiny13 · Темы GitHub · GitHub

Вот 76 публичных репозиториев соответствует этой теме…

MCUчувак / Микроядро

Звезда 472

лподкалицкий / блог

Спонсор Звезда 287

вагиминатор / ATtiny13-TinyUPS

Звезда 109

mcore1976 / антишпион-джаммер

Звезда 79

mcore1976 / глушитель

Звезда 67

вагиминатор / ATtiny13-TinyOLEDдемонстрация

Звезда 65

вагиминатор / ATtiny13-TinySolder

Звезда 60

вагиминатор / ATtiny13-TinyRemote

Звезда 57

лподкалицкий / attiny13-software-uart-библиотека

Спонсор Звезда 43

вагиминатор / ATtiny13-TinyRemoteXL

Звезда 40

вагиминатор / ATtiny84-TinyCalibrator

Звезда 40

пуриап / TinyRF

Звезда 37

вагиминатор / ATtiny13-TinyProbe

Звезда 32

B45i / Tiny-PoV

Звезда 27

вагиминатор / ATtiny13-TinyDecoder

Звезда 25

вагиминатор / AVR-Разработка-Платы

Звезда 25

джондо31415 / крошечный13fanctrl

Звезда 24

вагиминатор / ATtiny84-TinyHVSP

Звезда 22

вагиминатор / ATtiny13-TinyRemoteRF

Звезда 21

madcatdev / крошечный

Звезда 20

Улучшить эту страницу

Добавьте описание, изображение и ссылки на аттини13 страницу темы, чтобы разработчикам было легче узнать о ней.

Курировать эту тему

Добавьте эту тему в свой репозиторий

Чтобы связать ваш репозиторий с аттини13 тему, перейдите на целевую страницу репозитория и выберите «управление темами».

Узнать больше

Плата с микроконтроллером Attiny13A для управления 4 независимыми выходами — Share Project

  • HID2AMI HID MOUSE AND GAMEPAD to AMIGA ADAPTER (REV 2.0 board)Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public Licensehttps://github.com/EmberHeavyIndustries/HID2AMIHID2A…

    HID2AMI v2.

    0 с поддержкой колесика мыши

    6095 0 12

    EmberHeavyIndustries

    ЭмберХэвиИндастриз

    ИТАЛИЯ

  • Превращает Raspberry PI в 3-канальный монитор напряжения и тока для других устройств. Этот HAT содержит три микросхемы INA219, подключенные к шине I2C и измеряющие ток по трем независимым каналам. Шу…

    Шляпа монитора мощности RaspberryPI

    3158 2 4

    Рафал Витчак

    Рафал Витчак

    ПОЛЬША

  • TL; DR Модуль представляет собой простой способ подключения широко используемого (по крайней мере, в Германии) блока управления Buderus Logamatic 2107M для систем отопления на жидком топливе к вашей домашней сети и вашей домашней автоматизации. Этот…

    KM271 Модуль связи Buderus Logamatic Wi-Fi

    2849 0 4

    Глейзер

    Глейзер

    ГЕРМАНИЯ

  • Watchible — это дополнительная плата NB-IOT для Raspberry Pi Pico. Это низкая стоимость и низкая мощность. Он предназначен для мониторинга любого триггера с интерфейсом с низким импедансом. Как Pico, так и Quectel BCC-66…

    Наблюдаемая плата NB-IOT

    2428 6 0

    Дума

    Дума

    СОЕДИНЕННЫЕ ШТАТЫ АМЕРИКИ

  • WheelOfJoy — это открытый аппаратный адаптер джойстика для 8 игроков для Commodore 16 и Plus/4. Первоначальная цель состояла в том, чтобы выяснить, как работает адаптер Solder для 3 джойстиков. Это было довольно легко, как только я понял…

    WheelOfJoy — адаптер для джойстика Commodore 16/116/+4 на 8 игроков

    1737 2 4

    СуккоПера

    СуккоПера

    ИТАЛИЯ

  • https://martin-piper. itch.io/bomb-jack-display-hardwareМодульное аудио- и видеооборудование для ретро-машин, таких как Commodore 64. Разработано для использования интегральных схем TTL серии 74, доступных еще в 1…

    MegaWang 2000 Turbo Edition — Аудио V9.2

    2402 2 2

    Пайпер

    Пайпер

    СИНГАПУР

  • Картриджная плата для 8-разрядных компьютеров ATARI 65XE/130XE/800XE/800XL на базе универсальной микросхемы флэш-памяти SST39SF040 CMOS. В проекте не используются микросхемы программируемой логики, такие как GAL-чипы.

    Картридж SXEGS для ATARI 65XE/130XE/800XE

    3610 1 7

    продюсер

    кодер

    РОССИЙСКАЯ ФЕДЕРАЦИЯ,

  • LittleSixteen — это римейк домашнего компьютера Commodore 16 с открытым оборудованием, отличающийся множеством улучшений по сравнению с исходным дизайном. В V3 мы начали вносить улучшения в плату: перешли на внешний …

    LittleSixteen V3 — улучшенная материнская плата Commodore 16

    3432 6 6

    СуккоПера

    СуккоПера

    ИТАЛИЯ

  • Эй, ребята, что случилось? Итак, это PALPi, портативная игровая консоль в стиле ретро на базе Raspberry Pi Zero W, которая может запускать практически все ретро-игры, от SNES до PS1. Мозгом этого проекта является RECAL…

    Портативная ретро игровая консоль PALPi V5

    4773 1 5

    Арнов шарма

    Арнов шарма

    ИНДИЯ

  • В течение 3 лет я пробовал несколько ножных механизмов, сначала я решил сделать простую конструкцию с большеберцовым двигателем, размещенным на бедренном суставе. У этой конструкции было несколько проблем, так как она была не очень…

    Создание динамически эффективной роботизированной ноги.

    3349 1 9

    Мигель Асд

    Мигель Асд

    ИСПАНИЯ

  • ESP32-S в форм-факторе Arduino ESP32-S, по крайней мере, на мой взгляд, является одним из самых универсальных микроконтроллеров, доступных производителям на данный момент. Он отвечает почти всем моим требованиям по функциям, требуемым …

    Плата для разработки ESP32-S в форм-факторе «Arduino Uno»

    3526 4 13

    СоздательIoT2020

    MakerIoT2020

    ТАИЛАНД

  • Аналоговые усилители звука достаточно мощны, чтобы издавать высокий уровень шума со стабильной добротностью.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *