С первого раза не завелось

Спаял я все платы, кроме левой клавиатуры. Левую, думаю, можно пока отложить, она для работы некритична. Там всего-то в двух местах нужно кое-что закомментировать в коде, чтобы отсутствие данных из левой клавиатуры не мешало отлаживать остальное.

Как я и говорил в предыдущей заметке, с первого раза всё это хозяйство не завелось.

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

Сначала я решил убедиться, что каскад светодиодов работает, как запланировано. Сделал пару прошивок со вспомогательным кодом, чтобы посмотреть, все ли светодиоды загораются, и правильный ли у них в результате порядок. Оказалось, что один светодиод какой-то странный — плохой контакт где-то внутри; оживает при шевелении. Пришлось заменить на исправный.

С порядком оказалось чуть веселее. Там же у меня каскад из двух регистров. И данные из буфера в каскад я загружаю из цикла. А цикл, чисто на автомате, я начал с первого элемента массива. Забыл, что младший байт должен грузиться последним, т.к. загрузка этого каскада идёт «снизу вверх». В результате данные младшего регистра попадали в старший, и наоборот. Поправил.

В результате убедился, что как минимум управление светодиодами работает как надо. (Ну, помимо того, что всё хозяйство успешно питается от внешнего БП через спец-разъём, а не через USB на ардуинке.)

Затем с помощью очередной отладочной прошивки убедился в том, что до основного цикла дело не доходит. Т.е. выполнение кода останавливается где-то в блоке инициализации.

Раз у меня есть светодиоды, значит на них можно выводить «отладочную печать». 🙂 Добавил метод showDebugCode(), который выводит 9-битовое число на светодиоды. В двоичном коде, естественно. И расставил в блоке инициализации контрольные точки. Которые показали, что управление передаётся в метод init() библиотеки дисплея и оттуда не возвращается. Ну то есть надо копать в направлении «что не так с подключением дисплея». Простейшие моменты типа «нет ли обрыва дорожки» и «нет ли замыканий» я уже проверил (и один разрыв в дорожке я-таки нашёл; зачистил маску и спаял дорожку тоненьким проводком). Так что с основными проверками всё норм. Видимо, неисправность хитрее. Возможно, один сигнальный проводник (или оба) замыкают на что-то по дороге. (Т.е. возможно где-то при пайке повешена сопля, невидимая глазом.) Та же самая ардуинка, пересаженная на макетку с таким же точно дисплеем, нормально инициализируется и начинает «работать». То есть проблема именно где-то в платах.

В общем, надо копать. Продолжение следует.

Рис. 1

Запаяны все платы для правого полукорпуса

Ну, почти запаяны. Потому что я пока еще не запаял экранчик, и надо ещё соединить перемычками половинки передней и задней плат датчиков правой клавиатуры.

И я думаю, что надо будет соединить эти платы между собой и проверить их работу в режиме «разложено на столе». Можно будет подносить магнит к датчикам и смотреть, как оно всё работает. Или не работает.

Вообще, я удивлюсь, если всё это добро заведётся с первого раза. Пайку я, конечно, всю проверил визуально. Также я прозвонил все платы на предмет КЗ по питанию; нигде не коротит. Сигнальные выводы датчиков я тоже прозвонил, чтобы проверить, не коротят ли они на землю.

Рис. 1

По техническим причинам, переднюю и заднюю платы датчиков правой клавиатуры пришлось делать составными. Оборудование Дениса не позволяет делать платы, которые длиннее чем 280 мм. Половинки уже соединены между собой винтами М3 через соединительные пластины, сделанные из 2-миллиметровой стали. Покрытие пластин — моё любимое: воронение в льняном масле. Очень мне нравится эта технология. А ещё больше нравится результат: покрытие получается весьма стойкое к механическим повреждениям.

Есть у меня небольшие опасения, связанные как раз с одним из этих соединений передней платы датчиков (на рис. 1 она самая нижняя). Есть вероятность, что рычаги клапанов будут задевать гайки. А поднять плату не получится, т.к. сделать это не даст декоративная решётка (т.н. «ажурка»). Но это дело второе. Сначала нужно убедиться, что электроника работает так, как ожидается.

Рис. 2

Плата панели управления

Сегодня была запаяна плата панели управления (см. рис. 1).

Времени у меня на это ушло около 3.5 часов. Паял медленно, но аккуратно. Надо только завтра на свежую голову визуально проверить все пайки. Хоть это и маловероятно, но я мог где-то поставить соплю или не пропаять до конца. Экранчик пока не запаял. Я еще не решил, как я его буду припаивать: толи через гребёнку, толи проводами. Опять же, на свежую голову разберусь.

Возможно стоит эту плату проверить отдельно, не дожидаясь готовности ещё 4-х плат правой клавиатуры. Подумаю на эту тему.

Рис. 1

Запаял одну плату

Я не утерпел, и одну, самую маленькую плату уже запаял. Благо туда паять-то всего две контактные колодки под Ардуинку и два резистора (см. рис. 1).

Рис. 1

Паяется прекрасно. Маска не облезает, шелкография выдерживает отмывку флюса спиртом. Заодно испытал новый флюс в боевых условиях. Он прекрасен. Паяет великолепно, позволяет оценить качество пайки без смывания, смывается спиртом (ИПС) без проблем.

Рекомендую и флюс, и изготовителя печатных плат.

Рис. 2

Платы готовы

Сегодня праздник у ребят,
Ликует пионерия.

Я сегодня забрал заказанные ранее платы. На вид — очень качественно сделано. По внутренним дефектам будет понятно только после пайки. Скоро, скоро мой баян издаст первые электронные звуки.

Немного сомневаюсь я только по поводу платы датчиков 1-го и 2-го рядов правой клавиатуры (второй ряд сверху на рис. 1). Пространство между рычагами клапанов и декоративной решеткой там довольно маленькое — порядка 5 мм. Есть шанс, что плата туда не влезет; т.е. рычаги будут по ней стучать. В этом случае придётся чуть приподнимать декоративную крышку; делать проставки какие-то. Но очень надеюсь, что опасаюсь зря.

Следующий шаг — запаять все детали и проверить работоспособность всего этого хозяйства в режиме «разложено на столе». Сюрпризов не ожидаю, но они могут быть даже тогда, когда их не ожидают.

Рис. 1

Без усилий сэкономил 97 байт

Попробовал я установить для Ардуины «ядро» GyverCore. Установилось и заработало.

И оказалось, что я не зря попробовал: при компиляции с новым ядром прошивка MIDI-баяна оставляет свободным 307 байт ОЗУ. Стандартное ядро оставляло 214 байт. По ардуинным меркам такая экономия — это совсем не мелочь.

Так что рекомендую.

Рис. 1

Я не тормоз

Баян «Рубин 5» мне купили в 1980 году, когда я поступил в 1 класс музыкальной школы. Я на нём отучился до 1985, после чего эпизодически играл примерно до 1993. Потом этот баян хранился без движения 30 лет. И вот я его взялся переделывать в MIDI-баян.

И только сейчас я обратил внимание на то, что клавиатура кривая (см. рис. 1). Расстояние между кнопками 1 и 2 рядов больше, чем расстояние между 2 и 3 рядами (см. красные линии на рис. 1). И как следствие, «диагонали» (см. зеленую линию на рис. 1) неровные. 44 года мне понадобилось на то, чтобы обратить на это внимание.

Нет, я не тормоз.

Рис. 1

Это не помешало мне окончить музыкальную школу с отличием. Т.е. эта кривизна всё-таки «на скорость не влияет». Однако, мой внутренний перфекционист глубоко несчастлив теперь. Борюсь с желанием пересверлить отверстия в рычагах и перекрутить кнопки ровно.

Платы переданы в производство

Теперь только ждать. Мне не очень повезло, и приходится ждать ещё 2-3 недели. Но зато на мне заработает не левый посредник-китаец, а вполне конкретный земляк, делающий нужное и полезное дело за вполне приемлемые деньги. (Не то что многие конторы в России, которые заряжают за одну плату, как за чугунный мост.)

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

По этой теме мне остаётся только заниматься восстановлением беглости и координации рук. Всё-таки я не играл примерно с 1993 года. Но тут есть какая-то надежда. Опыт показал, что после примерно 3 часов занятий при игре гаммы в руке начинает появляться правильное ощущение «двигается как по рельсам», когда голове уже не нужно задумываться о том, куда становятся пальцы. Т.е. мышечная память не ушла совсем, она просто глубоко закопана сейчас. Конечно, было бы неплохо играть со звуком, да под метроном. Но для этого нужно получить готовые платы, запаять все детали, и установить всё хотя бы в правый полукорпус для начала. А перед установкой — проверить правильность работы в «разложенном на столе» виде. Надо мне, пожалуй, временно переключиться с баянной темы на что-то другое. А то тошно просто так, ничего не делая, ждать. Например, фотографии из последней поездки надо обработать.

Рис. 1

Платы разведены и подготовлены для передачи на изготовление

Пришлось переделать кое что. Во-первых, платы правой клавиатуры оказались слишком длинные. Пришлось и переднюю, и заднюю платы разделить на 2 части, чтобы длина одной платы не превышала 280 мм (технологическое ограничение). Но это не беда; ничего не стоит соединить две коротких платы в одну длинную с помощью металлических пластин. (У меня как раз есть стальная фольга 2мм, из которой эти пластины можно сделать.)

Во-вторых, пришлось подкрутить в нужную сторону параметры переходных отверстий.

Надеюсь, в обозримом и не сильно далёком будущем эти платы у меня будут лежать на столе.

Рис. 1

Больше знаний — больше печали…

…или как там у них правильно говорится.

В общем, посмотрел я на днях интересное видео на тему ударных инструментов через MIDI (см. ниже).

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

И я заодно понял, почему у меня получалась какая-то фигня, когда я пытался экспериментировать со звуками щёток по барабану: во время экспериментов параметр «velocity» был настроен на максимум. На практике такая настройка означает, что щёткой по барабану лупят, вместо того, чтобы щёткой барабан гладить.

Печаль.

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