- Потрібні компоненти
- Ардуїно Леонардо
- Модуль джойстика з двома осями XY
- Кругова діаграма
- Код та робоче пояснення
Раніше ми взаємодіяли джойстик з Arduino UNO, щоб зрозуміти, як він працює, і контролювали чотири світлодіоди ліворуч, праворуч, вгору і вниз. У цьому проекті ми будемо використовувати той самий джойстик, що і геймпад або ігровий контролер, щоб грати в будь-які комп’ютерні ігри, для яких потрібні рухи вліво, вправо, вгору та вниз. Для гри в ігри, які потребують більше можливостей управління, можна використовувати два або більше джойстики. Тут ми будемо використовувати Arduino Leonardo для інтерфейсу джойстика як ігрового контролера. Arduino Leonardo має перевагу перед Uno тим, що ми можемо встановлювати на нього драйвери USB, і його можна виявити як мишу, клавіатуру або джойстик комп’ютером при підключенні.
Потрібні компоненти
- Ардуїно Леонардо
- Модуль джойстика з двома осями XY
- IDE Arduino
- Підключення проводів
Ардуїно Леонардо
Для цього проекту ми використовуємо Arduino Leonardo, це мікроконтролерна плата на базі ATmega32u4. Він має 20 цифрових входів / виводів (з них 7 можна використовувати як ШІМ-виходи і 12 як аналогові входи), кристалічний генератор 16 МГц, підключення micro USB, гніздо живлення, заголовок ICSP і кнопку скидання. Він містить усе необхідне для підтримки мікроконтролера; просто підключіть його до комп’ютера за допомогою кабелю USB або підключіть до адаптера змінного / постійного струму або акумулятора, щоб розпочати.
Леонардо відрізняється від усіх попередніх плат тим, що ATmega32u4 має вбудований USB-зв’язок, усуваючи необхідність у вторинному процесорі. Це дозволяє Leonardo виглядати на підключеному комп'ютері як миша та клавіатура, на додаток до віртуального (CDC) послідовного / COM-порту.
Технічні характеристики
Мікроконтролер | ATmega32u4 |
Робоча напруга | 5 В |
Вхідна напруга (рекомендується) | 7-12В |
Вхідна напруга (межі) | 6-20В |
Цифрові штифти вводу-виводу | 20 |
ШІМ-канали | 7 |
Канали аналогового введення | 12 |
Струм постійного струму на контакт I / O | 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 Joystick вимагає зв’язку між Arduino та Joystick наступним чином:
Код та робоче пояснення
Повний код із демонстраційним відео наведено в кінці; тут ми пояснюємо кілька важливих його частин.
По-перше, нам потрібно ініціалізувати бібліотеку клавіатури
#включати
Далі в коді нижче ми ініціалізували вісь 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 і може використовуватися для гри в ігри з усіма елементами управління для переміщення вліво, вправо, вгору і вниз. Як було сказано Earliar, більше одного джойстика можна з'єднати, щоб отримати більше елементів управління, крім цих чотирьох основних функцій.