Делаем еще один джойстик (геймпад) на Arduino. Ардуино двигатель джойстик


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

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

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

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

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

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

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

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

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

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

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

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

Иходники тут

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

habr.com

Беспроводной джойстик от PlayStation + Arduino

Если у вас есть беспроводной джойстик от PlayStation, то вы сможете подключить его к Arduino и управлять своими поделками. Для этого вам не понадобится USB Host. В данной инструкции используется аналог беспроводного джойстика от PS3 купленного на eBay.

Список необходимых компонентов:

1. Беспроводной PS3 джойстик с радиоприемником.2. Провода 6 шт.3. Разъёмы.4. Вилка штыревая.5. Arduino Uno или Mega.

Подключение PS3 джойстика к Ардуино:

1. Изготовление проводов.

Возьмите провода, я использовал «джамперы» из набора. К одному концу припаяйте разъём, если нет одинарных, тогда отрежьте неиспользуемую часть разъема. Так как контакты в радиомодуле толстые, вам придётся увеличить отверстие в разъеме. Если вы используете простые провода, тогда к другому концу припаяйте штыревую вилку. У вас должен получиться вот такой провод.

Для корректной работы джойстика вам понадобится добавить как минимум два резистора. Это связано с тем, что радиомодуль работает от 3.3В, а рабочее напряжение на пинах Ардуино Уно и Мега 5В. Сам автор библиотеки пишет, что у одних пользователей работает с резисторами, у других без резисторов. В моем случае, ниже указанная схема самая стабильная.

Для пинов Command и Clock добавьте резисторы номиналом 5.6 КОм. Провода будут выглядеть так.

Радиомодуль с подключенными проводами.2. Подключение радиомодуль к Ардуино:

Распиновка радиомодуля от PS3 джойстика (обозначены только нужные нам пины):

Подключите провода к указанным пинам на приемнике. После этого, подключите приемник к Ардуино по следующей схеме. Пины на Ардуино можно будет изменить в скетче.Настройка и запуск программы для работы с джойстиком:

1. Скачайте и установите библиотеку PS2X_lib2. Откройте пример из библиотеки. Если вам нужен пример с комментариями на русском языке скачайте его тут PS2X_Example_RUS3. Настройте нужные вам пины в скетче.4. Загрузить скетч на Ардуино.5. Откройте монитор портов6. Библиотека не поддерживает подключение на горячую, по этому если радиомодуль не переходит в режим поиска вам нужно: Отключить питание от радиомодуля, затем подключить питание снова снова. При необходимости  перезагрузить ардуино кнопкой ресет.7. Включите джойстик. Некоторые клоны джойстиков могут не работать или работать не правильно. Возможно вам поможет отключение проверки ошибок. if(error == 1) - Проверка ошибок. Если ваш джойстик обнаруживается как неизвестный контроллер, но на нажатия кнопок не реагирует, попробуйте в скетче закрыть комментариями две строки. Выглядеть это будет примерно так:

// if(error == 1) //Цикл «loop» пропускается если джойстик не найден// return;

Применение:

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

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

Оцените Материал!

Понравилась запись? - поставь лайк.

Это может быть вам интересно:

robocontroller.ru

PS2 джойстик управление шасси танка с Arduino для DIY

Интеллектуальный гусеничная шасси/танк с Arduino для DIY  TS100 с управлением

Этот набор для развития Arduino uno можно построить управляемый танк и передне приводной 2WD автомобиль. Кроме того, есть беспроводной передатчик и приемник, вы можете управлять танком или автомобилем через беспроводное управление.

Также есть инструкция по написанию исходного кода, приложение и руководство пользователя.

 

Параметры интеллектуальный гусеничная шасси/танк с Arduino для DIY  TS100 

  • Название: TS100 Интеллектуальный гусеничная шасси/танк
  • Материал: алюминиевый сплав
  • Колеса: алюминиевый сплав
  • Трек: инженерный пластик
  • Размер игрушки: около 275*190*95 мм (длина * ширина * высота)
  • Вес: 1100 г
  • Цвет: Золотой Желтый/Серебряный/черный

Параметры двигателя (25 мм 9 В двигатель постоянного тока)>:

  • Наименование: 25 мм  мотор
  • Скорость вращения: 150±10% об/мин
  • Ток без нагрузки: 200мА (Max)
  • Ток (max): 4500mA
  • Крутящий момент: 9,5 kgNaN
  • Номинальная скорость: 100±10% об/мин
  • Номинальный крутящий момент: 3000 gNaN
  • Номинальный ток: 1200ма (макс)
  • Шум: 56dB
  • Рабочее напряжение: 9 В
  • Внешняя длина вала: 14,5 мм
  • Конец вала: 0,05-0,50 мм
  • Винт Размеры: M3.0
  • Диаметр  D3.5
  • Энкодер: 2 импульсов/круг

В зависимости от выбора комплект поставки PS2 джойстик управление шасси танка с Arduino для DIY

Черный/Серебряный/Желтый Полный комплект:

  • Шасси: 1 шт.(Золотой Желтый/Серебряный/черный)
  • Водительские колеса: 2 шт.
  • Подшипники колес: 10 шт.
  • Дорожка: 2 шт.. (можно изменить длину)
  • DC 9 В двигателя: 2 шт.
  • Винты: 1 комплект
  • PS2 комплект управления: 1 комплект

Только PS2 комплект управления:

  • 2-канальный мотор и 16-канал сервопривод плата: 1 шт.
  • UNO доска: 1 шт.
  • USB кабель: 1 шт.
  • Беспроводной контроллер: 1 шт..
  • Приемник: 1 шт.
  • Активный зуммер (динамик): 1 шт..
  • Набор столбиков крепления : 1 компл.
  • Батарейный блок: 1 шт.
  • Провода Dupont: 1 шт..

Черный/серебристый/желтый 9 В 150 об./мин.:

  • Шасси: 1 шт.(Золотой Желтый/Серебряный/черный)
  • Ведущие колеса: 2 шт.
  • Подшипники колес: 10 шт.
  • Гусеницы: 2 шт.. (можно изменить длину)
  • DC 9 В 150 об./мин. двигателя: 2 шт.
  • Винты: 1 комплект

Бонус:

  • Шестигранный ключ: 1 компл.
  • Крепление батареи

Примечание:

  • Для удобства транспортировки, шасси не собрано.
  • В комплект не входит аккумулятор.

 

Купить PS2 джойстик управление шасси танка с Arduino для DIY

Раздел: Ардуино Метки: PS2 джойстик управление шасси танка с Arduino для DIY, TS100 Интеллектуальный гусеничная шасси/танк

raspberry3.ru