Делаем еще один джойстик (геймпад) на Arduino

    Шла обычная пятница, ничто не предвещало беды…

    Но червь «нужно что-то сделать» уже начал свою работу. После прочтения статьи я вспомнил, что у меня в барахле лет 15, если не больше, валяется сеговский геймпад. Забрал я его с твердым намерением сделать геймпад на процессоре AVR (про ардуино я тогда и не слышал, но пару небольших проектов на AVR сделал).

    Еще больше утвердила мое намерение статья про MSX, и в пятницу я решил — делаю!


    Из закромов был вытащен на белый свет сеговский геймпад в разобранном состоянии. К моему изумлению он был в полном комплекте (ну, если не считать порезанные дорожки и отсутствующий оригинальный контроллер), не хватало только 2-х болтиков.

    image

    В качестве контроллера я решил использовать Beetle, так как он был заказан мной когда-то, но пока не испробован, да и не очень понравился «малым количеством портов».

    image

    И тут меня ждало разочарование — портов 6, кнопок 10. Горю моему не было предела, но мозг таки нашел решение, для начала я решил попробовать собрать прототип из 2-х кнопок, так как я решил использовать фокус с диодом, чтобы опрашивать 10 кнопок с помощью 6 выводов. Практически окрыленный, я засел за проверку… И тут случилась следующая неприятность — кнопок на джойстике больше, чем 10! В общем это был тот момент, когда нужно было смотреть в документацию, хотя идей было много — например припаять (ага, моим паяльником, который накрывает почти все ножки с одной стороны микросхемы), или поискать просветления в интернете.
    Документация же четко сказала, что портов у Beetle на самом деле не 6, а 10, что сделало дальнейший процесс скучным (так я думал). (Использование 8 выводов дает возможность опрашивать 2 * 6 = 12 кнопок, что мне и было нужно)

    Схема подключения — матрица 6 х 2, потому как оригинальная плата была разведена удобным мне образом. (Кстати в процессе предыдущей переделки дорожки были порезаны, чтобы подключить клавиатурный контроллер, пришлось восстанавливать, вышло страшненько)

    Схема получившегося геймпада:

    image

    Быстро накидав пример я убедился что он не работает… Не понял?! Пример то простейший. Подумав, сообразил, что цифровому пину не хватает того сопротивления, что дают резиновые токопроводящие кнопки, немного изменил схему, теперь читается аналоговый сигнал и сравнивается с половиной максимума. Перепаиваю контакты, переписываю программу и… ничего не работает, совсем. Контроллер не определяется, все пропало. Код проверен, и перепроверен, все должно работать! А контроллер не видится ни в какую. Мотивация падает, делаем перерыв.

    Через некоторое время безуспешно поигравшись с Beetle, ну все, убил контроллер своим паяльником, с сожалением достаю из закромов Arduino Micro, прошиваю прошивку и снова тишина! Становится понятно, что-то не так с кодом, в конце концов нахожу банальную причину — бесконечный цикл в loop(), исправляю, но зашить то не могу! Оказывается проблема, когда контроллер не видится решается нажатием на резет во время прошивания (или замыканием пинов в моем случае)

    В итоге получился сеговский геймпад, проверен, работает, я счастлив: поиграл в Metal Gear, Felix The Cat, Super Mario.

    image
    image
    image

    Иходники тут

    P. S. «Трюк со светодиодом». Конечно не обязательно использовать светодиод, обычный диод лучше подходит, суть простая, вместо двух выводов использовать один, соединенный с разными кнопками через 2 диода:

    image

    Поделиться публикацией

    Похожие публикации

    Комментарии 15
      0
      Какая няшная ардуиночка, однако :3
        0
        Ага. Только вот соотношение количества выведеных пинов к общему числу ног контроллера как-то даже пугает.
          0
          Еще и цена неразумная, до сих пор не понимаю зачем купил ))
            +2
            Ну, это бывает. Называется «чо-то накатило».
            0
            Даже и не заметил сразу :|
          0
          А сколько памяти такой скетч отъедает на МК?
            0
            5,204 bytes (18%)
            0
            ̶Н̶е̶ ̶с̶о̶в̶с̶е̶м̶ Совсем не понял, что за трюк со светодиодом? Схемы-то не видать.
              0
              Добавил схему
              +1
              Сначала паять научились бы, смотреть страшно…
                0
                Все хочу попробовать, но не решил пока какой паяльник купить, чтобы не сжигал все вокруг
                  0
                  даже с CT-96 жить станет легче намного!
                  easyelectronics.ru/payalnik-ct-96.html
                    0
                    ИМХО тут скорее проблема в недостаточном количестве припоя и флюса.
                    Ну и да, паяльник — любой, я пользуюсь простым 35 ватт с медным жалом.
                  +1
                  Я поступил проще, сделал переходник на usb, и джойстики можно менять.
                  Ссыль
                    0
                    Да, ваша статья у меня тоже в памяти отложилась. К сожалению мой джойстик уже был безнадежно испорчен давным давно, оригинальная схема еще тогда была беспощадно уничтожена. И самое главное — я нашел куда пристроить Beetle.

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

                  Самое читаемое