Закупил сегодня 2 варианта выключателей (см. рис. 1). Установка планируется в верхней части (верх — когда баян находится в рабочем положении). Клавиша/кнопка будет снаружи, а контакты — внутри герметичного объёма.
С точки зрения внешнего вида, мне больше нравится вариант с чёрной клавишей. Но с точки зрения удобства и надёжности герметизации более перспективно выглядит «красная кнопка».
В принципе, и клавишу, наверное, можно загерметизировать, если сажать на герметик. В общем, буду думать. Чёрная клавиша мне кажется и более эстетичной, и более надёжной с точки зрения внутреннего механизма.
Спаял модули почти начисто. «Почти» — это потому что в разрыв одного из проводов, идущего от аккумуляторов, ещё нужно будет врезать выключатель. (Который надо еще купить, кстати.)
Один стабилизатор я настроил на 5 В (перепаял перемычку). В результате он выдаёт 4.94 В. Этого вполне достаточно как для датчиков Холла, так и для датчика давления. Другой стабилизатор выдаёт 3.29 В (ну, это практически 3.3). Так всё и оставлю.
Рис. 1
Главный вопрос, который у меня был ко всему этому хозяйству — это смогут ли аккумуляторы заряжаться, когда включена вся схема.
Аккумуляторы, держалка для аккумуляторов, модуль зарядки с защитой от переразряда и два модуля стабилизатора — один будет выдавать 3.3 В, а другой 5 В. (К сожалению, датчики Холла и датчик давления требуют именно 5 В, и питать всю схему от 3.3 В не получится.)
Модули приклею на термоклей к торцам держалки. А весь комплект как-то закреплю уже внутри герметичного объёма. Рядом с платой микроконтроллера.
Поменялся микроконтроллер, добавилась память EEPROM, микросхемы согласования логических уровней между 3.3- и 5-вольтовой логикой, и радиомодуль. И коннектор для подключения устройства чтения SD карт.
Обстоятельства заставили меня разориться и купить новые кнопки для баяна (см. рис. 1). Кнопки итальянские, с красивым перламутровым отливом, на 1 мм больше диаметром, чем родные, и гораздо более комфортные для нажатия. Покупал здесь. Кнопки Z-0031 (белые) и Z-0032 (чёрные). Демпферы Z-0051 (чёрные).
Был некий соблазн купить красные демпферы, но всё-таки я решил, что это будет цыганщина, и купил чёрные. Довольно органично смотрится.
А ещё была мысль купить только белые кнопки, чёрно-белые ноты выделять чёрными и белыми демпферами (как иногда делают на концертных баянах). Но я подумал, что это может вызвать лишний напряг при разучивании всякого. А напрягаться, даже немного, мне что-то в последнее время совсем не хочется. Так что остановился на традиционном варианте.
И раз уж я взялся крутить кнопки, я решил, насколько смогу, исправить замеченную мною ранее кривизну второго ряда. Для этого надо было передвинуть крепежные отверстия кнопок второго ряда примерно на 1 мм ближе к первому ряду.
Рис. 1
В целом, всё получилось. Получилось не идеально (где-то совсем хорошо, где-то не очень), но, на мой взгляд, заметно лучше, чем было. Но, как обычно, кое-что пошло не по плану.
Сегодня у меня получилось завести библиотеку MD_MIDIFile на моей RP2040-Zero, на нестандартных выводах SPI.
Устройство инициализируется, файлы читаются. И содержимое файлов выводится в отладочный серийный порт.
Осталась небольшая проблема. Упомянутая библиотека умеет либо, собственно, проигрывать эти файлы, либо выводить их «дамп» в отладочный порт. Причём и то, и другое, она делает «в режиме реального времени» — т.е. с заданной скоростью проигрывания данного файла.
Мне же, для моих «баянных» задач надо будет выбранные файлы сначала сканировать, чтобы убедиться, что содержимое этих самых файлов «правильное», что в них нет ничего лишнего, что могло бы испортить настройки рабочих MIDI-каналов баяна, и что могло бы помешать управлению воспроизведением MIDI автоаккомпанемента (задавать теми, и т.п.). И сканировать надо не со скоростью воспроизведения, а со скоростью чтения файла.
И, судя по всему, придётся эту библиотеку дорабатывать под свои задачи. Хоть я такое и не люблю. Но это будет в любом случае быстрее (и идеологически правильнее), чем разводить ещё одну (свою) библиотеку только для сканирования файлов.
Ранее я писал о том, что научился искать свободный радиоканал. Но делать это надо будет не на стороне приёмника (который будет сделано на Arduino nano), а на стороне передатчика, который будет сделан на RP2040.
Я недавно писал, что нашел хороший исходник для работы с EEPROM микросхемами AT24C16.
Оказалось, что он выгодно отличается от «доступных аналогов» тем, что работает очень быстро. Как говорится, «самая быстрая запись в EEPROM на Диком Западе». 🙂
Это потому, что в этом коде есть интересная изюминка. Микросхемы эти обрабатывают запросы на запись/чтение довольно медленно. Микроконтроллер должен ждать окончания предыдущей операции прежде чем отправлять в микруху новый запрос. В 99% примеров кода, доступных в сети, народ тупо лепит задержку на пару миллисекунд. Но в этом коде нет никаких задержек, зато там есть это:
static void at24cxx_wait(int i2c_address)
{
int resault = 0;
do
{
Wire.beginTransmission(i2c_address);
resault = Wire.endTransmission();
} while (resault != 0);
}
Это, оказывается, позволяет избежать излишнего ожидания и приступать к следующей операции в ту же самую долю микросекунды, когда микросхема EEPROM готова принять очередной запрос. В результате запись происходит очень быстро. Минимум на порядок быстрее, чем вариант с задержками.
Основную мелодию без проблем можно сыграть на баяне правой рукой, благо, в моем новом синтезаторе есть отличнейшие тембры духовых инструментов.
В композиции имеется второй голос (см. на подыгрывающих летучих мышей-вампиров); там немного другой тембр. И этот второй голос можно без проблем сыграть левой рукой на выборке!
Басовую линию при этом сыграть уже не получится. А если утащить второй голос в правую руку, чтобы левой играть бас, то тогда оба голоса будут звучать одним тембром, что не совсем правильно. Буду думать и пробовать.
А ударное сопровождение сам бог велел засунуть в авто-аккомпанемент. В ту его версию, которая будет во 2-й версии баяна на контроллере RP2040 (с проигрыванием MIDI файлов с флеш-карты SD).