Сегодня я закончил, собственно изголовье. Вторая обивка у меня заняла существенно меньше времени, чем первая. Опыт, однако.
Следующий этап — длинная настенная панель.
Блог обо всём.
…, что я буду не перерабатывать прошивку, взятую с форума, а писать свою, подсматривая нужные функции в форумной.
Ну просто чем дальше я в неё смотрю, тем меньше она мне нравится. Для моего взгляда, она выглядит так, как будто её писали, не особо заботясь о какой-то идеологической или архитектурной красоте. Уж не знаю наверняка, что там в самом начале было взято за основу, но программу эту развивали тупо добавляя туда нужные в данный момент функции. Наверное, спагетти-кодом я бы это не назвал, но какой-то упорядоченностью там не пахнет. Больше всего мне не нравится, что анализ нажатых кнопок и какие-то производимые действия (выдача очередной команды в MIDI интерфейс или выполнение каких-то служебных функций) перемешаны в какую-то однородную кашу.
Не нравится. Напишу по-своему.
Сделаю нормальную очередь событий, которая в каждом рабочем цикле будет сначала набиваться, а потом разгребаться. И буду делать нормальный конечный автомат вместо вязанки различных флажков и if-ов размазанных по всему основному циклу.

P.S. Алик только что порадовал: ко мне уже приехали входные регистры 74HC165. Завтра (т.е. уже сегодня) заберу, и можно будет писать и отлаживать чтение клавиш и управляющих кнопок (в моей архитектуре они будут читаться одинаковым образом); не как в оригинальной прошивке.
Сейчас класс поддерживает 2 режима работы каждого светодиода: непрерывный и мигающий. На видео одна кнопка перебирает светодиоды с одного конца линейки (сначала включает непрерывный режим, а потом выключает), а вторая кнопка перебирает светодиоды с другого конца, включая и выключая мигающий режим.
Думаю, что пользоваться будет удобно.
Подумаю, может ещё что-нибудь можно накорябать, пока детали едут. Интересно же.
Пока основная часть деталей ко мне ещё едет. Но в наборе была одна микросхема 74HC595 и 10 светодиодов с резисторами 220 Ом. Это значит, что уже можно заняться написанием и отладкой блока светодиодной индикации.
Я подумал, что раз уж я хочу делать управляющую панель, то наверняка захочу, чтобы состояния некоторых кнопок показывались светодиодами. В частности, есть пока не до конца сформировавшаяся идея, что неплохо бы сделать клавиши переключения «регистров» (т.е. в моём случае это будут MIDI-каналы для правой, левой басовой и левой готово-выборной клавиатур). Чтобы они выглядели максимально похоже на клавиши регистров настоящего баяна. Похоже, это вполне можно сделать, если использовать сенсорные кнопки; в наборе как раз есть 3 штуки на пробу. Так вот, будет удобно и правильно, если включенный регистр будет подсвечиваться светодиодом. Ну то есть понадобится управлять как минимум 10-ю светодиодами. Угадайте как? Через сдвиговый регистр, ясен пень.
Вот, собрал на макетке «стенд». Буду играться.
Программирование для Ардуино, как оказалось, это чистый восторг. 32к ОЗУ для программы, 2к ОЗУ для данных. Непосредственная работа с железом. Красота. Чувствую себя как в 1990 году, когда я программировал для ЭВМ СМ-1420, СМ-1300 и немножко для СМ-1700. Старое-доброе программирование в условиях ограниченных ресурсов.
Кстати, по вычислительной мощности вот эта вот п$#дюлина на рис. 1 скорее всего превосходит ту самую СМ-1300. Возможно, в разы.
Сегодня я на своём многострадальном сервере развернул gitlab (см. рис. 1).
Чую, писать придётся много, а экспериментировать ещё больше. Колхозные методы управления версиями хоть и работают (именно ими я пользовался в 90-е), но нормальный git всё-таки лучше.
Эх и «толстая» же это система, эта ваша gitlab. Я в какой-то момент даже подумал, что моему серверу перестанет хватать 3 Гб ОЗУ. Но нет, вроде пока хватает. Если что — сделаю swap побольше. 🙂

Точнее, набор GiverKIT.
И первое, что я с ней сделал, это измерил, какая же всё-таки задержка сделана в оригинальной прошивке MIDI баяна:
// Задержка на 2500 счётов
for (volatile int a=0;a<2000;a++);
Оказалось, что это всего 2 мс. Именно столько времени, получается, нужно датчикам Холла, чтобы включиться.
Интересно. Есть теперь, с чем поиграться.
«Мама, я снова программист!» 🙂

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

Когда я в начале 2000-х купил свой первый автомобиль, владельцы различных авто между собой общались на форуме www.auto.ru. Там для каждой марки был свой раздел. И тогда было модно всячески издеваться над водителями «Волг». В основном за то, что они ведут себя на дороге как мудаки (едут между рядами, не пользуются поворотниками, подрезают, и т.п.). Такое было тогда народное творчество, в общем.
С тех пор автопарк в стране поменялся до неузнаваемости, старые машины, в том числе «Волги» становятся редкостью.
Но иногда они возвращаются (см. рис. 1).
Ну как изголовье… Вот конкретно сегодня я сделал изножье (см. рис. 1).
Эта панель — простейшая по конструкции: прямоугольник из фанеры вешается на стену на самодельных подвесах. Если испорчу в процессе обивки, то всё что я потеряю — это кусок фанеры; не жалко. Но не испортил.
Технологию, слава ютубу, изобретать не пришлось: взял из этого видео.
В следующие выходные сделаю обивку для, собственно, изголовья. Технология, считай, уже отработана. Все нужные материалы уже есть.
Читать далее «Изголовье для кровати — 3»По следам прошлой заметки.
Изучил я соответствующую тему на форуме. При ближайшем рассмотрении выяснилось несколько вещей:
В общем, эта затея совсем не из разряда «взял готовую разработку и повторил как есть». Придётся взять чужую версию прошивки и переработать.
Перерабатывать надо будет по таким основным направлениям:
То есть прежде чем даже смотреть в сторону собственно баяна, нужно построить и отладить прототип электронной начинки. Т.е. немножко попаять и множко попрограммировать. Вообще, вся идея выглядит вполне реализуемой, и оттого весьма интересной. Берусь. Для старта у меня сейчас вообще ничего ардуиновского нет, поэтому лучшим вариантом вижу покупку набора GyverKIT START. Там, конечно, дофига ненужного в данный момент, но зато есть основное, что нужно для старта.

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