Arduino HID joystick gamepad na míru!
Chybí vám tlačítka na gamepadu nebo nejdou použít či namapovat? S Arduinem to lze snadno vyřešit! Prostě si vyrobte svůj gamepad na míru. Postup je velmi jednoduchý.
V gamepadu použijeme Arduino desku s mikrokontrolérem ATmega32u4, která se dokáže tvářit jako HID zařízení, tedy myš nebo klávesnice. A v tom vlastně spočívá jednoduchost tohoto projektu. O použití Arduina jako myš nebo klávesnice jsme psali v tomto článku.
Zalovte v šuplíku a připravte si následující věcičky. Pokud lovíte marně, tak vás odkazy zavedou na osvědčené produkty na e-shopu HW Kitchen.
- Arduino MICRO nebo Arduino LEONARDO
- Joystick modul
- 2 x spínací tlačítko
- Propojovací drátky M/F
- Tělo gamepadu – vezměte co je po ruce
Obsah článku:
Zapojení gamepadu s Arduinem
Jednotlivé součásti zapojte podle tohoto schématu. K propojení využijte drátky s konektory M/F.
Po propojení uchyťte elektroniku na tělo gamepadu.
Knihovna pro joystick: stáhnout a nainstalovat
Otevřete Arduino IDE, zkompilujte a nahrajte program:
#include <Joystick.h>
Joystick_ Joystick;
void setup() {
// Initialize Button Pins
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
// Initialize Joystick Library
Joystick.begin();
}
// Constant that maps the phyical pin to the joystick button.
const int pinToButtonMap = 9;
// Last state of the button
int lastButtonState[4] = { 0, 0, 0, 0 };
void loop() {
// Read pin values
for (int index = 0; index < 4; index++) {
int currentButtonState = !digitalRead(index + pinToButtonMap);
if (currentButtonState != lastButtonState[index]) {
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
}
}
Joystick.setXAxis(analogRead(A0));
Joystick.setYAxis(analogRead(A1));
Joystick.setRxAxis(analogRead(A2));
Joystick.setRyAxis(analogRead(A3));
delay(50);
}
Celá specifikace knihovny je na GitHub. Knihovna obsahuje několik tutoriálů, podle kterých lze postupovat ve vlastním projektu. V ReadMe.md je pěkně popsáno, co vše můžeme vytvořit. Jsou zde pokryty téměř všechny typy herních zařízení (volanty, letecké kniply, pedály, klávesnice). Knihovna dokáže vytvořit až 4 zařízení na jednom Arduinu. To znamená, že na jednom USB portu jsou fyzicky 4 gamepady!
Poznámky ke stavbě
Při nahrávání programu se může někdy stát, že proběhne kompilace, ale Leonardo nechce začít nahrávat program. Řešením je počkat na konec kompilace a zmáčknout reset tlačítko na Leonardu. Pro gamepad je celkově lepší použít menší desku Arduino MICRO.
Video s celým postupem stavby gamepadu
Projekt pro HW Kitchen a Arduino.cz nabastlil Zbyněk Daněk. Díky!
- Microbit ve výuce a doma aneb jak a s čím začít - 27.11.2024
- Arduino HID joystick gamepad na míru! - 25.11.2024
- Zažijte bouřku přímo v pokoji - 9.7.2024