Накропал какой-то интерфейс к линейке светодиодов через сдвиговый регистр

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

Думаю, что пользоваться будет удобно.

Подумаю, может ещё что-нибудь можно накорябать, пока детали едут. Интересно же.

Это просто счастье какое-то

Пока основная часть деталей ко мне ещё едет. Но в наборе была одна микросхема 74HC595 и 10 светодиодов с резисторами 220 Ом. Это значит, что уже можно заняться написанием и отладкой блока светодиодной индикации.

Я подумал, что раз уж я хочу делать управляющую панель, то наверняка захочу, чтобы состояния некоторых кнопок показывались светодиодами. В частности, есть пока не до конца сформировавшаяся идея, что неплохо бы сделать клавиши переключения «регистров» (т.е. в моём случае это будут MIDI-каналы для правой, левой басовой и левой готово-выборной клавиатур). Чтобы они выглядели максимально похоже на клавиши регистров настоящего баяна. Похоже, это вполне можно сделать, если использовать сенсорные кнопки; в наборе как раз есть 3 штуки на пробу. Так вот, будет удобно и правильно, если включенный регистр будет подсвечиваться светодиодом. Ну то есть понадобится управлять как минимум 10-ю светодиодами. Угадайте как? Через сдвиговый регистр, ясен пень.

Вот, собрал на макетке «стенд». Буду играться.

Программирование для Ардуино, как оказалось, это чистый восторг. 32к ОЗУ для программы, 2к ОЗУ для данных. Непосредственная работа с железом. Красота. Чувствую себя как в 1990 году, когда я программировал для ЭВМ СМ-1420, СМ-1300 и немножко для СМ-1700. Старое-доброе программирование в условиях ограниченных ресурсов.

Кстати, по вычислительной мощности вот эта вот п$#дюлина на рис. 1 скорее всего превосходит ту самую СМ-1300. Возможно, в разы.

Рис. 1

Готовлю рабочее место

Сегодня я на своём многострадальном сервере развернул gitlab (см. рис. 1).

Чую, писать придётся много, а экспериментировать ещё больше. Колхозные методы управления версиями хоть и работают (именно ими я пользовался в 90-е), но нормальный git всё-таки лучше.

Эх и «толстая» же это система, эта ваша gitlab. Я в какой-то момент даже подумал, что моему серверу перестанет хватать 3 Гб ОЗУ. Но нет, вроде пока хватает. Если что — сделаю swap побольше. 🙂

Рис. 1

Приехала ко мне Ардуинка

Точнее, набор GiverKIT.

И первое, что я с ней сделал, это измерил, какая же всё-таки задержка сделана в оригинальной прошивке MIDI баяна:

// Задержка на 2500 счётов
for (volatile int a=0;a<2000;a++);

Оказалось, что это всего 2 мс. Именно столько времени, получается, нужно датчикам Холла, чтобы включиться.

Интересно. Есть теперь, с чем поиграться.

«Мама, я снова программист!» 🙂

Рис. 1

P.S. А баян мой уехал ремонтироваться. Аж в Новосибирск. Пересылка — 3500 р. в один конец.

MIDI баян

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

  1. Окончательно решено, что баян будет на 100% электронным. Т.е. по сути он будет переделан в довольно продвинутую MIDI клавиатуру. «Аналоговая» часть (т.е. резонаторы с голосами) удаляется и больше использоваться не будет. Собственно, я её уже удалил и сложил в углу. Чтобы не отправлять СДЭКом лишний вес (см. следующий пункт).
  2. Для получения полноценного электронного баяна необходимо, чтобы была возможность управлять громкостью с помощью штатного меха. Т.е. для того, чтобы инструмент звучал, в нём должно быть давление воздуха, как в настоящем баяне. Величина этого давления будет измеряться спец-датчиком, и громкость звучания будет пропорциональна этому самому давлению. Всё как в жизни. Но для этого нужно чтобы внутренний объём инструмента был герметичен. А для этого нужно баян отправить на восстановительные работы специальному мастеру. Я уже с ним договорился; поскольку мне нужен ремонт по сокращенной программе, мой баян будет обслужен в обход штатной очереди (ждать которую обычно приходится 10 месяцев). Повезло мне, что и говорить.
  3. В качестве датчиков нажатия клавиш будут использоваться датчики Холла OH137 совместно с неодимовыми магнитами диаметром 4 мм и толщиной 2 мм. Я проверил, такой магнит должен нормально проходить через самое маленькое клапанное окно (самые высокие звуки левой выборной клавиатуры). Магниты и датчики уже заказаны. К слову говоря, с потребляемым током я в прошлый раз немножко (всего на порядок) ошибся. Потребляемый ток будет порядка 0.4А.
  4. Поскольку мне нужно читать состояние 107 клапанов, и кроме того я очень хочу сделать управление MIDI системой с помощью дополнительных физических кнопок (а не с помощью музыкальной клавиатуры), единственный вариант обеспечить ввод всех необходимых данных — это использовать входные сдвиговые регистры 74HC165. Мне их будет нужно аж 19 штук. Заказаны, едут.
  5. Предвидится очень много работы по переработке исходной прошивки для Ардуино. Будет совершенно другой код для чтения состояния клавиш (клапанов) и управляющих кнопок. Сами платы Arduino nano и всё необходимое для отладки аппаратной части ко мне уже едет в составе набора GiverKIT START.
  6. В качестве MIDI синтезатора я присмотрел ATEMP MIDI HW Synth. 16 MIDI каналов, 8 пресетов, и весьма хороший набор органных звуков. (Да, я собираюсь делать вид, что играю на органе Hammond.) Окончательно я еще не решил, но 95% вероятность, что куплю именно это. В качестве усилителя пока будет босяцкий вариант: активные компьютерные колонки; у меня как раз есть неиспользуемый комплект. (Но основной режим вывода звука будет «в наушники» непосредственно с синтезатора.)

Самая расходная часть проекта — ремонт баяна. Но без этого абсолютно никак нельзя обойтись, если нужно управление мехом. (А оно реально нужно).

Стоимость же электронной части обещает быть примерно в 10 раз меньше, чем у доступных готовых решений (будь то установка MIDI-системы «под ключ» или Электронный баян Roland «единичка»).

Рис. 1

Про MIDI-баян

По следам прошлой заметки.

Изучил я соответствующую тему на форуме. При ближайшем рассмотрении выяснилось несколько вещей:

  1. Тема давнишняя, на форуме зарегистрироваться не получается (т.к. не пускает зависающая капча). Т.е. до тамошних людей не достучаться. Да и сообщений в теме не было давно.
  2. Официальный сайт проекта был по адресу www.openmidi.ru, но похоже сайт протух и его там сейчас нет. А ведь туда выкладывались обновления для прошивок.
  3. Гитхаб живой, но там, судя по всему, лежит только самая первая версия прошивки. В самой теме на форуме имеются более новые версии, прикрепленные к сообщениям.
  4. В теме на форуме я вроде бы нашел более-менее свежую прошивку, которую, видимо, и придётся взять за основу.

В общем, эта затея совсем не из разряда «взял готовую разработку и повторил как есть». Придётся взять чужую версию прошивки и переработать.

Перерабатывать надо будет по таким основным направлениям:

  • Текущий способ чтения датчиков клавиатуры годится только для т.н. «готового» баяна. Там на левую клаву физически можно подключить максимум 24 датчика. Для «готового» больше и не надо, а вот для выборки надо 52 датчика слева. Т.е. «матрично-построчное» чтение датчиков здесь уже не годится, надо будет переделывать на сдвиговые регистры типа 74HC165. И переписывать соотвествующую часть прошивки. И надо будет нагородить датчик положения переключателя режима левой клавы.
  • И это даже хорошо, потому что заодно можно будет напихать сдвиговых регистров и для работы с аппаратными кнопками управления, которые в базовой прошивке не предусмотрены. А панель с выделенными кнопками управления — гораздо удобнее, чем спец-режимы на основной «музыкальной» клаве.
  • И раз пошла такая пьянка, и раз уж всё равно придётся городить собственный огород, то может быть прикручу и какие-нибудь индикаторы. Или простейшие светодиоды, или может даже LCD.
  • Нужно будет абсолютно полностью разобраться во всей прошивке, иначе не получится доделать то, что там не успел доделать автор. И не получится потом добавлять то, что я захочу уже сам.

То есть прежде чем даже смотреть в сторону собственно баяна, нужно построить и отладить прототип электронной начинки. Т.е. немножко попаять и множко попрограммировать. Вообще, вся идея выглядит вполне реализуемой, и оттого весьма интересной. Берусь. Для старта у меня сейчас вообще ничего ардуиновского нет, поэтому лучшим вариантом вижу покупку набора GyverKIT START. Там, конечно, дофига ненужного в данный момент, но зато есть основное, что нужно для старта.

Рис. 1 КДПВ

А потреблять этот самый MIDI-баян будет примерно 4А при 5В питания. Дофига, однако. Как-никак, не меньше 107 датчиков Холла туда придётся вкорячить.

Вторая жизнь старому баяну

Не так давно я писал про баянообразные электронные инструменты.

Но совсем недавно ютуб подкинул мне интересное видео, через которое я вышел на прекрасную тему на баянном форуме: «Самодельная MIDI система для баяна или гармони«.

И знаете что? Оказывается, мой старый баян вполне можно переделать в MIDI инструмент! Это вполне реально и не запредельно дорого.

Причём управление громкостью там происходит движением меха, как на обычном акустическом баяне.

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

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

Рис. 1 КДПВ

Недо-баян

Вообще, баян Roland для меня ценен не тем, что это, собственно, баян. Он ценен тем, что из него можно извлекать звуки разнообразных музыкальных инструментов, включая, например, звуки электромеханического органа Hammond.

Примерно на такие же подвиги способна, в общем-то, любая MIDI клавиатура. Но фортепианную клавиатуру я ненавижу за её инопланетность, поэтому такие варианты я не рассматриваю в принципе. Но вообще-то, есть в природе баянная MIDI клавиатура (см. рис. 1). И всё бы хорошо, если бы не цена аж в 23 тыр. Для клавы, которая не умеет различать силу и скорость нажатия на кнопки, это очень дорого. За 12 тыр я бы, может быть, ещё подумал. Но за 23 — пока думаю, что нет. Пусть эта идея у меня в голове помаринуется с годик.

А пока мне кажется, что отремонтированный баян Рубин-5 способен принести больше счастья, чем миди-клава за 23.

Рис. 1

Может, отремонтировать?

Есть у меня баянчик, на котором я учился в муз. школе в далёкие 80-е. Такой, как на рис. 1. С тех пор я его практически не брал в руки. Как-то, может, год назад достал из интереса — он уже совсем в нерабочем состоянии, компрессии нет, отклик практически никакой. (Там в баянном механизме есть много чего, что деградирует со временем.)

А тот мне попался канал мастера, который ремонтирует баяны. В том числе «Рубины» (по его словам, через его руки прошли уже десятки «Рубинов»). И судя по всему, мой рубинчик можно довести до состояния «лучше, чем в своё время был новый». И денег за это надо будет отдать не так уж много — порядка 50 тыр (на сегодняшний день).

Я, прям, задумался. С одной стороны, я хочу купить дом Roland FR-4XB, но не имею возможности. С другой стороны, я имею возможность купить козу восстановить «Рубин-5», но вот имею ли я такое желание?

Буду думать.

Рис. 1