Светодиоды показывают ошибку «от клавиатуры пришло какое-то неопозненное сообщение». Ну, то есть с висящего в воздухе входа SPI прочитался мусор. Это нормально.
Но поскольку на этапе сборки/настройки будет удобно включать схему без одной или без двух клавиатур, то, пожалуй, мусор на входе придётся игнорировать, как будто вообще ничего не приходило.
Сам драйвер-то уже умеет определять, что клавиатура не подключена, и отправлять соответствующее информационное сообщение в системную очередь.
Ну, надо приступать к пайке плат правой клавиатуры.
На голом C++, без FreeRTOS оно заработало ещё в конце декабря. То был, как говорится, proof of concept. А 6-го января заработал SPI-slave, написанный под FreeRTOS. Пришлось, правда, слегка подпилить ардуинную библиотеку SPISlave, чтобы оно нормально работало в FreeRTOS. И мою доработку даже включили в т.н. «ядро» rp2040.
И с тех пор я продвинулся с позиции «нет ничего, кроме заготовки отправляльщика-принимальщика сообщений по SPI» до состояния «имею практически полнофункциональную прошивку которая умеет работать в штатном режиме, а также имеет поддержку режима настройки». (Да, активную клаву надо будет настраивать для того чтобы выставить как можно бОльшее расстояние между положениями, которые прошивка принимает за «полностью отпущено» и «до упора нажато».)
А на стороне центрального модуля я отрезал поддержку клавиатуры построенной на регистрах сдвига, и добавил связь с модулем клавиатуры.
Теперь надо запаять плату центрального модуля и проверять на реальном железе работу обновленного центрального модуля, а затем и всего остального.
В общем, выходные прошли не зря. Я продвинулся очень неплохо.
Запаял плату панели управления для следующей версии баяна.
Отличие от предыдущей версии в том, что:
На плате расположено гнездо для microSD карты (слева под дисплеем виден краешек). В текущей версии баяна карта находится внутри герметичного корпуса. Опыт показал, что время от времени всё-таки приходится эту карту доставать. В новом баяне я для этого хотя бы разбирать его не буду. 🙂
Предусмотрено 2 дополнительных отверстия для крепления платы в корпусе. В старой плате всего 4 отверстия по углам, в результате плата провисает, что совсем нехорошо.
Для подключения платы будет использоваться шлейф. В старую плату я паял проводки МГТФ.
В целом, функционал, состав и расположение кнопок не изменились. Тут как в УАЗ-буханкой: «сразу хорошо получилось». 🙂
Вчера я закончил реализацию обмена данными между центральным контроллером баяна (типа, слева на рис. 1) и контроллером клавиатуры (типа, справа на рис. 1).
Обмен происходит по SPI. Центр — Master, клавиатура — Slave. Обмен возможен по инициативе как одной, так и другой стороны. Т.е. центр может отправлять управляющие команды клавиатурам и получать от них ответы. А клавиатура может отправлять центральному контроллеру сообщения о клавиатурных событиях (нажатия и отпускания клавиш).
Прошивка контроллеров клавиатур пишется на FreeRTOS. Как оказалось, это просто прелесть. Очень нравится.
Ну а раз ноты баянные, то в этот раз я решил записать ролик по-простому. С баянным звуком. Без изысков. Баян, как он есть. Ну в смысле, как он реализован в звуковом модуле Atemp ProDX. Своих собственных голосов-то в моём баяне нет. 🙂
Но отсутствие физических голосов отнюдь не мешает управлять звуком с помощью меха в точности так же, как это делается на обычном баяне. Динамика, акценты, и всё остальное, включая вибрато мехом.
Здесь — пример реального использования такой настройки. В этом примере павая рука управляется мехом, а бас-аккорд — просто играют со своей громкостью, не обращая внимания на мех.
Прошло примерно 40 дней с момента заказа, и платы у меня.
3 с лишним килограмма плат.
Рекорд здесь у платы панели управления (показано стрелкой на рис. 1). Этих плат мне сделали аж 25 и весит эта стопка 1.2 кг. Это при том, что на самом деле мне надо по 2 платы (основная и запасная на всякий случай), а заказать пришлось по 5 плат — это минимальное количество плат.
Вот вместо того, чтобы заваливать меня лишними платами, которые мне аосблютно некуда деть, т.к. ценность они представляют исключительно для меня, лучше бы они на 50% меньше денег взяли. 🙂
Платы датчиков (которые с прямоугольными окнами) я заказал толщиной 0.6 мм. Тоненькие. Красота неописуемая.
Следующий шаг — запаять все платы и собрать всю схему на столе. А потом пробовать, как всё это хозяйство работает. Правда, для этого понадобится доработать прошивку самого баяна. И написать прошивки для контроллеров клавиатур — да, теперь у правой и у левой клавиатур будут свои контроллеры. Те же самые RP2040-zero, только в SMD исполнении. Чтобы можно было запаять плату контроллера прямо на плату датчиков. (На рис. 1 можно разглядеть соответствующие посадочные места). Как вы уже поняли, показания аналоговых датчиков будут читаться специально предназначенными для этого контроллерами. А информация о клавиатурных событиях будет отправляться в основную прошивку MIDI-баяна по SPI. (Этот способ двустороннего обмена информацией между «главным» контроллером и контроллерами клавиатур я уже отработал.)
Заодно и FreeRTOS освою, раз уж буду писать прошивки контроллеров клавиатур с нуля.
Я тут довожу до автоматизма «подтяжки» (AKA «bends») с помощью гиро-датчика. В «Ленивом Дике».
Всё-таки приём этот неприменим к стандартному баяну. Нужно к этому привыкнуть. Причем независимо от того, каким конкретно способом делается «подтажка» (толи покачиванием баяна, толи с помощью джойстика).
И вот подтяжка, расположенная в месте, указанном на рис. 1, у меня почему-то долгое время не получалась. И я не мог понять почему остальные получаются более-менее нормально, а эта — нет.
И я понял. В этом месте нужно перенести правую руку на некоторое расстояние. И я по привычке контролировал правильность переноса с помощью быстрого взгляда на руку. В нормальных условиях это вообще не проблема. Н не в том случае, когда нужно сделать подтяжку, покачивая баян из «стандартного» положения чуть вперёд. Для того, чтобы бросить взгляд на руку, я непроизвольно наклонял баян на себя. И именно в этот момент надо было начинать подтяжку. А баян при этом расположен не в исходном положении. В результате подтяжка либо запаздывает, либо вообще не получается. И как только я перешел на тактильный контроль вместо визуального (запомнил расстояние «рукой») — проблема ушла. Теперь эта подтяжка получается не хуже, чем остальные.
Если играть с выключенным мехом, то всё просто: достаточно настроить соотношение громкостей звучания в настройках клавиатур. В простейшем случае — это «везде по 127». После чего настроить комфортную громкость рукояткой громкости на модуле/усилителе.
Если играть со включенным мехом, то всё несколько сложнее.
По-прежнему нужно настроить соотношение громкостей между клавиатурами. Чтобы, например, басы и аккорды не забивали мелодию.
Общую громкость (в системных настройках баяна) нужно установить максимальной — 127.
Громкость на модуле/усилителе следует настраивать так:
Выключить мех, чтобы получить максимальную громкость инструмента.
Регулятором громкости на модуле/усилителе настроить громкость «фортиссимо» — это будет та громкость, с которой баян будет звучать при максимальном усилии на мехе. «Фортиссимо» должно звучать «слишком громко для нормальной игры».
Снова включить мех.
Здесь дело в том, что стандартное усилие на мехе — это примерно 50% от максимума. И если громкость усилителя настроить на «фортиссимо», как описано выше, то при обычной игре громкость будет нормальная, комфортная. При этом сохраняется возможность выдать «фортиссимо» при необходимости.