Цветовые палитры для пространства HSV

«Готовь сани летом» — именно этой пословице мы с другом решили последовать, начав разрабатывать новогоднюю гирлянду на широко известных RGB светодиодах со встроенным драйвером WS2812B.
После того, как было решено, что все программные манипуляции с цветом будем производить в цветовой модели HSV, встал вопрос о конвертере HSV->RGB. Ибо формата отличного от RGB светодиоды не понимают. Использовать готовые конвертеры или тупо переложить в код готовые формулы преобразований, чтобы просто оперировать стандартным пространством HSV — неинтересно. Душа требовала какой-нибудь изюминки. Ну и в общем-то что хотела, то и получила.



Читать дальше

AppNotes по емкостным тач-падам

Очень полезные описания емкостных тач-падов: от кнопок до сенсорных панелей разной формы и назначения.

cache.freescale.com/files/sensors/doc/app_note/AN3863.pdf
www.ti.com.cn/cn/lit/an/slaa576/slaa576.pdf

Готовая микросхема — контроллер емкостных тач-падов MPR121:
www.sparkfun.com/datasheets/Components/MPR121.pdf

LED-кубы: новая технология

Наткнулся случайно на интересную разработку в LED: WS2812B — Intelligent control LED integrated light source
Она будет интересна всем, кто работает с большим кол-вом светодиодов.
Суть новшества в том, что каждый светик, условно, является 24-битовым сдвиговым регистром. Состояние этого регистра задает цвет светика в режиме RGB: по 8 бит на каждый цвет (всего 16М цветов). Т.к. регистр сдвиговый, светики можно соединять последовательно каскадом и управлять всеми по ОДНОЙ(!) линии.
Схема соединения:

И рекомендуемая схема включения:


Протокол передачи данных:

Тайминги сигналов


Частота сканирования светиков — не менее 400Hz. Скорость передачи данных 800Kbps.
Т.е. сейчас можно элементарно сделать LED-куб 4х4х4 на одном контроллере. А при желании и 10x10x10.
Форма-фактор: SMD 5050.
Datasheet: www.adafruit.com/datasheets/WS2812B.pdf
На ebay продают 1000штук за $110.

Управление светодиодной лентой на WS2812B с STM32F10x

Про подключение светодиодных лент на WS2812B к STM32 написано немало статей. Наиболее правильный вариант, с моей точки зрения, описан в статье на Хабре, однако у него есть ряд недостатков:

  • Новичку трудно в нем разобраться
  • Неэкономно расходуется память, что позволено STM32F4 — не позволено STM32F10x

Оба этих недостатка я попытался устранить в своей библиотеке stm32f10x-ws2812b-lib.


Читать дальше

Цифровые нерекурсивные фильтры. Часть 2.

Эпиграф:«Asinus Buridani inter duo sinus cardinalis»

Существует огромное количество методик вычисления коэффициентов КИХ- фильтра. Посмотреть некоторые их них можно здесь или здесь. И всегда возникает вопрос: «А какую методику выбрать? Или тупо обратиться к МатЛабу?».
С одной из этих методик я и собираюсь вас подробно ознакомить. В этой части мы будем создавать КИХ — фильтры. Как говорится — «своими руками» (ну и немного — головой:-)!


Читать дальше

Цифровые нерекурсивные фильтры. Часть 1.

Обобщив не очень приятный опыт написания статей, посвящённых рекурсивным фильтрам, решил всё же обратиться к теме нерекурсивных, или КИХ (FIR) фильтров.
Можно считать, что этот цикл статей написан в качестве моральной компенсации тем, кто ничего не понял в моих предыдущих статьях, посвященным БИХ — фильтрам… :-)
Сразу предупреждаю, что знания основ матана, ТФКП, линейной алгебры и ТОЭ по-прежнему обязательны!


Читать дальше

I2C расширитель портов PCF8574

PCF8574 на макетной платеРасширители портов на сдвиговых регистрах — решение известное, простое в понимании и использовании, дешевое и многократно описанное (например вот, вот и вот).

Но есть у него и определенные недостатки.

Во-первых, как и все SPI-устройства, сдвиговый регистр требует для себя отдельной линии «chip select» (CS), и это при том, что шина как таковая и так занимает три свободных порта ввода/вывода (MOSI, MISO, SCK).

Во-вторых, сдвиговый регистр может увеличивать либо входы, либо выходы, но не то и другое стразу. А если нужны и входы, и выходы — то нужно ставить два регистра и выделять два пина CS. Обидно.

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

А тут мне на глаза попался расширитель портов PCF8574 (даташит TI, даташит NXP) на базе шины I2C.

Читать дальше

Цифровые рекурсивные фильтры. Часть 3.

Продолжение статей Часть 1. и Часть 2.
Нам осталось рассмотреть преобразования аналогового НЧ фильтра в цифровой ФНЧ, ФВЧ, полосовой и режекторный фильтр.


Читать дальше

Цифровые рекурсивные фильтры. Часть 2.

Продолжаем цикл статей, посвященных цифровым рекурсивным фильтрам…
Основной акцент в этой статье будет сделан на методике расчёта матриц z- преобразования и обосновании метода «быстрого» вычисления коэффициентов фильтра. Обычно для расчёта применяют линейную свёртку, которая требует О(N^2) операций умножения. Применение матриц z- преобразования существенно снизить количество таких операций. Удалось также получить вид матриц, требующий минимального объёма памяти.
Начало — Часть 1. продолжение — Часть 3.


Читать дальше

Цифровые рекурсивные фильтры. Часть 1.

Я долго думал, как назвать тему. Вариантов было много: от рекламно-жизнерадостного «Цифровые фильтры — это очень просто!» до (с ярким оттенком снобизма) «Алгоритмы построения цифровых IIR- фильтров Баттерворта — для тупых!»
«По совету друзей» (с) я решил остановиться на нейтральном названии (простенько, но со вкусом (с)): «Цифровые рекурсивные фильтры», или, как их ещё называют в простонародье, «БИХ-фильтры» или фильтры с Бесконечной Импульсной Характеристикой, что эквивалентно буржуйскому IIR (infinite impulse response).
Моя цель — подготовить подготовить вас к чтению серьёзных статей по этой тематике (не дай Бог, конечно, но в жизни может всякое случиться...).
Продолжение в Часть 2. Часть 3.


Читать дальше