- Необходимые компоненты
- Ардуино Леонардо
- Двухосевой джойстик XY
- Принципиальная электрическая схема
- Код и рабочее объяснение
Ранее мы связали джойстик с Arduino UNO, чтобы понять, как он работает, и управляли четырьмя светодиодами слева, справа, вверх и вниз. В этом проекте мы будем использовать тот же джойстик, что и геймпад или игровой контроллер, чтобы играть в любые компьютерные игры, требующие движений влево, вправо, вверх и вниз. Чтобы играть в игры, требующие большего количества возможностей управления, можно использовать два или более джойстика. Здесь мы будем использовать Arduino Leonardo для взаимодействия джойстика в качестве игрового контроллера. Arduino Leonardo имеет преимущество перед Uno в том, что мы можем установить на него драйверы USB, и он может быть обнаружен компьютером как мышь, клавиатура или джойстик при подключении.
Необходимые компоненты
- Ардуино Леонардо
- Двухосевой джойстик XY
- IDE Arduino
- Соединительные провода
Ардуино Леонардо
В этом проекте мы используем Arduino Leonardo, это плата микроконтроллера на базе ATmega32u4. Он имеет 20 цифровых входов / выходов (из которых 7 могут использоваться как выходы ШИМ, а 12 - как аналоговые входы), кварцевый генератор на 16 МГц, разъем micro USB, разъем питания, разъем ICSP и кнопку сброса. Он содержит все необходимое для поддержки микроконтроллера; просто подключите его к компьютеру с помощью USB-кабеля или включите адаптер переменного тока в постоянный или аккумулятор, чтобы начать работу.
Leonardo отличается от всех предыдущих плат тем, что ATmega32u4 имеет встроенный интерфейс USB, что устраняет необходимость во вторичном процессоре. Это позволяет Leonardo отображаться на подключенном компьютере как мышь и клавиатура в дополнение к виртуальному (CDC) последовательному / COM-порту.
Технические характеристики
Микроконтроллер | ATmega32u4 |
Рабочее напряжение | 5В |
Входное напряжение (рекомендуется) | 7-12В |
Входное напряжение (пределы) | 6-20В |
Цифровые контакты ввода / вывода | 20 |
Каналы ШИМ | 7 |
Каналы аналогового ввода | 12 |
Постоянный ток на выводе ввода / вывода | 40 мА |
Постоянный ток для вывода 3.3 В | 50 мА |
Флэш-память | 32 КБ (ATmega32u4), из которых 4 КБ используется загрузчиком |
SRAM | 2,5 КБ (ATmega32u4) |
EEPROM | 1 КБ (ATmega32u4) |
Тактовая частота | 16 МГц |
Длина | 68,6 мм |
Ширина | 53,3 мм |
Вес | 20 г |
Ссылка на вывод PIN
Двухосевой джойстик XY
Джойстики бывают разных форм и размеров. Типичный модуль джойстика показан на рисунке ниже. Этот модуль джойстика обычно обеспечивает аналоговые выходы, и выходное напряжение, обеспечиваемое этим модулем, постоянно меняется в соответствии с направлением, в котором мы его перемещаем. И мы можем узнать направление движения, интерпретируя эти изменения напряжения с помощью микроконтроллера. Ранее мы сопрягали джойстик с разными микроконтроллерами:
- Взаимодействие джойстика с Arduino
- Взаимодействие джойстика с Raspberry Pi
- Взаимодействие джойстика с микроконтроллером PIC
- Интерфейс джойстика с микроконтроллером AVR
Как видите, этот модуль джойстика имеет две оси. Это ось X и ось Y. Каждая ось JOY STICK крепится к потенциометру или горшку. Средние точки этих горшков вытесняются как Rx и Ry. Таким образом, Rx и Ry являются переменными точками для этих горшков. Когда джойстик находится в режиме ожидания, Rx и Ry действуют как делители напряжения.
Когда джойстик перемещается по горизонтальной оси, напряжение на выводе Rx изменяется. Аналогично, когда он перемещается по вертикальной оси, напряжение на выводе Ry изменяется. Итак, у нас есть четыре направления джойстика на двух выходах АЦП. Когда ручка перемещается, напряжение на каждом контакте повышается или понижается в зависимости от направления.
Принципиальная электрическая схема
Для этого игрового контроллера с джойстиком Arduino требуются следующие соединения между Arduino и джойстиком:
Код и рабочее объяснение
Полный код с демонстрационным видео приведен в конце; здесь мы объясняем несколько важных его частей.
Во-первых, нам нужно инициализировать библиотеку клавиатуры.
#включают
Далее в приведенном ниже коде мы инициализировали оси X и Y модуля джойстика для аналоговых контактов A0 и A1 соответственно.
const int X_pin и const int Y_pin соответственно
Считывается аналоговое значение вывода VRX, и если значение равно 1023, то дается команда «вверх», а если значение равно 0, то дается команда «вниз».
Аналогичным образом считывается аналоговое значение вывода VRY, и если значение равно 1023, то дается команда «вправо», а если значение равно 0, то дается команда «влево».
Джойстик также имеет кнопку сверху, поэтому эта кнопка (SW) также считывается, и если кнопка нажата, значение будет 0, тогда будет дана команда для «ввода».
Наконец, запишите код в Arduino и подключите Arduino к компьютеру.
Затем проверьте « Устройства и принтеры» на панели управления, вы сможете увидеть « Arduino Leonardo» в разделе устройств, как показано на рисунке ниже. Теперь вы готовы играть с джойстиком.
С помощью этого джойстика мы можем управлять любыми элементами управления игрой. Внутри джойстика есть два потенциометра: один для движения по оси X, а другой - для движения по оси Y. Каждый потенциометр получает 5 В от Arduino. Таким образом, когда мы перемещаем джойстик, значение напряжения будет изменяться, и аналоговое значение на аналоговых выводах A0 и A1 также изменится. Так что джойстик будет работать как геймпад.
Вот как обычный джойстик можно превратить в игровой контроллер с помощью Arduino Leonardo и использовать для игр, в которых есть все элементы управления для перемещения влево, вправо, вверх и вниз. Как уже говорилось ранее, можно подключить более одного джойстика, чтобы получить больше элементов управления, помимо этих четырех основных функций.