Прикинул свои потребности на перспективу, получилось до 30 серв и до 100 световых каналов. Естественно, ардуино и шим-драйвер - наше всё: два на стрелки и шесть на свет, если не удастся повесить на один декодер, сделаем два (так думал).
Немного порыл форумы и выбрал за основу эту библиотеку -
http://www.mynabay.com/dcc_monitor/
Просидел выходные в попытке переделать скетч примера. Конечно, программист из меня ещё тот, более четырёх одновременно обслуживаемых приводов с плавным переводом не получилось, начинались пропуски команд. Без плавного проблем нет, но это же неинтересно. Задачка оказалась сродни попытке скрестить ужа с ежом: первый должен держать хвост на пульсе, дабы не пропустить нужную команду, но при этом четыре, ну пусть даже восемь иголок - далеко не ёж. Даже не морской...
В воздухе витала идея оставить ужу ужово, а ежу ежово. Услышано - сделано. Неделя свободного времени, и пара "гнедых" были впряжены в одну упряжку:
Прошу прощения, схема от руки, там всё до безобразия просто: опторазвязка (по ссылке выше), в качестве ужа Ардуино-Про-Мини-168, к ней через последовательный порт подключен ёж Ардуино-Нано-328, на её выход I2C цепляются гирлянды PCA9685. Ах да, ещё для удобства сделал пульт - дисплей 1602 I2C, энкодер и дополнительная кнопка (в скетче подписано, кто куда).
На данный момент у меня один драйвер 9685, остальные в пути, поэтому он отдувался за всех. При отключенном пульте производительности хватает обеспечивать 30 одновременно идущих переключений, если их больше - плавно увеличивается интервал между "шагами" (выбрал 20 мс - частота ШИМа для серв).
Пульт нужен в основном для настройки углов, скорости переключения, реверса, остальные добавлю по мере необходимости. Свои 14 стрелок и один расцепитель настроил, правда пару раз всё зависло, надо оптимизировать код настройки. В работе с КС от МД проверил, всё отлично. Зетку ещё не пробовал.
Да, для облегчения себе жизни остановился на 128 адресах (32х4), идущих подряд, тогда в один байт помещается и адрес, и команда. Мне пока достаточно, а там поглядим. Остальные детали в скетче, он тщательно прокомментирован, если что интересно_&&_!понятно - спрашивайте
Так было:
Так стало:
Пульт, режим настройки (скорость переключения):
ПС Забыл указать ресурсные возможности.
Уж заполнен кодом на 25%, данными на 50%, то есть в принципе можно было порыться на моём складбище и приколхозить Мегу8АУ, но 100 рублей не та экономия, ради которой ...
Ёж загружен на 32%+60%, еепром наполовину, так что запихнуть в него же дополнительные алгоритмы работы со светом вполне возможно.