Шла обычная пятница, ничто не предвещало беды…
Но червь «нужно что-то сделать» уже начал свою работу. После прочтения статьи я вспомнил, что у меня в барахле лет 15, если не больше валяется сеговский геймпад. Забрал я его с твердым намерением сделать геймпад на процессоре AVR (про ардуино я тогда и не слышал, но пару небольших проектов на AVR сделал).
Еще больше утвердила мое намерение статья про MSX, в общем в пятницу я решил — делаю!
Из закромов был вытащен на белый свет сеговский геймпад в разобранном состоянии, к моему изумлению он был в полном комплекте, не хватало только 2-х болтиков.
В качестве контроллера я решил использовать Beetle, так как он был заказан мной когда-то, но пока не испробован, да и не очень понравился «малым количеством портов».
И тут меня ждало разочарование — портов 6, кнопок 10, горю моему не было предела, но
Схема подключения — матрица 6 х 2, потому как оригинальная плата была разведена удобным мне образом. (Кстати в процессе предыдущей переделки дорожки были порезаны, чтобы подключить клавиатурный контроллер, пришлось восстанавливать, вышло страшненько)
Быстро накидав пример я убедился что он не работает… Не понял?! Пример то простейший. Подумав, сообразил, что цифровому пину не хватает того сопротивления, что дают резиновые токопроводящие кнопки, немного изменил схему, теперь читается аналоговый сигнал и сравнивается с половиной максимума. Перепаиваю контакты, переписываю программу и… ничего не работает, совсем. Контроллер не определяется, все пропало. Код проверен, все должно работать! В общем контроллер не видится ни в какую. Мотивация падает, делаем перерыв.
Через некоторое время безуспешно поигравшись с Beetle, с сожалением достаю из закромов Arduino Micro, прошиваю прошивку и снова тишина! Становится понятно, что-то не так с кодом, в конце концов нахожу банальную причину — бесконечный цикл в loop(), исправляю, но зашить то не могу! Оказывается проблема, когда контроллер не видится решается нажатием на резет во время прошивания (или замыканием пинов в моем случае)
В итоге получился сеговский геймпад, проверен, работает, я счастлив, поиграл в Metal Gear, Felix The Cat, Super Mario.
Иходники тут
Автор: valfrom