- Необходими компоненти
- Ардуино Леонардо
- Модул на джойстика с двойна ос XY
- Електрическа схема
- Код и работно обяснение
Преди това сме свързали Джойстик с Arduino UNO, за да разберем как работи и контролирахме четири светодиода в ляво, дясно, нагоре и надолу движение. В този проект ще използваме същия джойстик като Gamepad или игровия контролер, за да играем всякакви компютърни игри, които изискват движения наляво, надясно, нагоре и надолу. За да играете игри, които изискват повече опции за управление, могат да се използват два или повече джойстика. Тук ще използваме Arduino Leonardo, за да свържем джойстика като контролер на играта. Arduino Leonardo има предимство пред Uno, че можем да инсталираме USB драйвери върху него и той може да бъде разпознат като мишка, клавиатура или джойстик от компютър, когато е свързан.
Необходими компоненти
- Ардуино Леонардо
- Модул на джойстика с двойна ос XY
- IDE на Arduino
- Свързващи проводници
Ардуино Леонардо
За този проект използваме Arduino Leonardo, това е платка за микроконтролер, базирана на ATmega32u4. Той има 20 цифрови входно-изходни щифта (от които 7 могат да се използват като ШИМ изходи и 12 като аналогови входове), 16 MHz кристален генератор, micro USB връзка, захранващ жак, ICSP хедър и бутон за нулиране. Той съдържа всичко необходимо за поддържане на микроконтролера; просто го свържете към компютър с USB кабел или го захранвайте с AC-to-DC адаптер или батерия, за да започнете.
Leonardo се различава от всички предходни платки по това, че ATmega32u4 има вградена USB комуникация, премахвайки необходимостта от вторичен процесор. Това позволява на Leonardo да се показва на свързан компютър като мишка и клавиатура, в допълнение към виртуален (CDC) сериен / COM порт.
Технически спецификации
Микроконтролер | ATmega32u4 |
Работно напрежение | 5V |
Входно напрежение (препоръчително) | 7-12V |
Входно напрежение (граници) | 6-20V |
Цифрови I / O щифтове | 20. |
ШИМ канали | 7 |
Канали за аналогов вход | 12 |
DC ток на I / O Pin | 40 mA |
DC ток за 3.3V Pin | 50 mA |
Флаш памет | 32 KB (ATmega32u4), от които 4 KB използвани от bootloader |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Тактова честота | 16 MHz |
Дължина | 68.6 мм |
Ширина | 53.3 мм |
Тегло | 20 гр |
Препратка към PIN изхода
Модул на джойстика с двойна ос XY
Джойстиците се предлагат в различни форми и размери. Типичен модул Джойстик е показан на фигурата по-долу. Този модул Джойстик обикновено осигурява аналогови изходи и изходните напрежения, предоставени от този модул, продължават да се променят според посоката, в която го движим. И можем да получим посоката на движение, като интерпретираме тези промени на напрежението с помощта на някакъв микроконтролер. Преди това сме свързали джойстика с различни микроконтролери:
- Свързване на джойстик с Arduino
- Свързване на джойстик с Raspberry Pi
- Свързване на джойстик с PIC микроконтролер
- Джойстик взаимодействие с AVR микроконтролер
Този модул на джойстика има две оси, както можете да видите. Те са оста X и Y оста. Всяка ос на JOY STICK е монтирана към потенциометър или гърне. Средните точки на тези саксии се изхвърлят като Rx и Ry. Така Rx и Ry са променливи точки към тези саксии. Когато джойстикът е в режим на готовност, Rx и Ry действат като делител на напрежението.
Когато джойстикът се премести по хоризонталната ос, напрежението на Rx щифта се променя. По същия начин, когато се движи по вертикалната ос, напрежението на щифта Ry се променя. Така че имаме четири посоки на джойстика на два ADC изхода. Когато пръчката се премести, напрежението на всеки щифт става високо или ниско в зависимост от посоката.
Електрическа схема
Този контролер за игра на Arduino Joystick изисква връзки между Arduino и Joystick, както следва:
Код и работно обяснение
В края е даден пълен код с демо видео; тук обясняваме няколко важни части от него.
Първо, трябва да инициализираме библиотеката на клавиатурата
#include
След това в кода по-долу сме инициализирали оста X и Y на модула на джойстика за аналогови пинове A0 и A1 съответно.
const int X_pin и const int Y_pin съответно
Аналоговата стойност на VRX щифта се чете и ако стойността е 1023, тогава се дава командата за „нагоре“ и ако стойността е 0, тогава се дава командата за „надолу“.
По същия начин се чете аналоговата стойност на щифта VRY и ако стойността е 1023, тогава се дава командата за „вдясно“ и ако стойността е 0, тогава се дава командата за „вляво“.
Джойстикът също има бутон отгоре, така че този бутон (SW) също се чете и ако бутонът се натисне, стойността ще бъде 0, тогава се дава командата за „enter“.
Накрая запишете кода в Arduino и свържете Arduino с компютър.
След това проверете „ Устройства и принтери“ в контролния панел, ще можете да видите „ Arduino Leonardo“ в раздела за устройства, както е показано на изображението по-долу. Сега сте готови да играете с джойстика.
Можем да контролираме всички контроли на играта, използвайки този джойстик. Джойстикът има два потенциометра вътре, единият е за движение по оста X, а друг е за движение на оста Y. Всеки потенциометър получава 5v от Arduino. Така че, докато движим джойстика, стойността на напрежението ще се промени и аналоговата стойност на аналоговите щифтове A0 и A1 също ще се промени. Така че джойстикът ще действа като геймпад.
Така че по този начин един нормален джойстик може да бъде преобразуван в Game Controller с помощта на Arduino Leonardo и може да се използва за игра на игри, като всички контроли се движат наляво, надясно, нагоре и надолу. Както беше казано по-рано, повече от един джойстик могат да бъдат свързани, за да се получат повече контроли, различни от тези основни четири функции.