Merhaba,
Ben esp32 ile bluetoothlu gamepad yapıyorum. Bu projede "esp32_ble_gamepad" adlı kütüphaneyi kullandım. Projeye 8 buton ve 2 joystick ekledim. Bağlantılar da şu şekilde;
A Buton -> D32
B Buton -> D33
Y Buton -> D25
X Buton -> D26
Yukarı Tuşu -> D21
Aşağı Tuşu -> D19
Sağ Tuşu -> D5
Sol Tuşu -> D18
Sol Joystick X Ekseni -> D15
Sol Joystick Y Ekseni -> D13
Sağ Joystick X Ekseni -> D34
Sağ Joystick Y Ekseni -> D35
Butonlar mükemmel çalışıyor ancak joystiklerde bir sıkıntı var. Ne kadar denersem deneyeyim düzelmiyor. Algılamasında sorun var. Kod bölümüne kodları bırakıyorum, bana yardım edebilir misiniz?
Ben esp32 ile bluetoothlu gamepad yapıyorum. Bu projede "esp32_ble_gamepad" adlı kütüphaneyi kullandım. Projeye 8 buton ve 2 joystick ekledim. Bağlantılar da şu şekilde;
A Buton -> D32
B Buton -> D33
Y Buton -> D25
X Buton -> D26
Yukarı Tuşu -> D21
Aşağı Tuşu -> D19
Sağ Tuşu -> D5
Sol Tuşu -> D18
Sol Joystick X Ekseni -> D15
Sol Joystick Y Ekseni -> D13
Sağ Joystick X Ekseni -> D34
Sağ Joystick Y Ekseni -> D35
Butonlar mükemmel çalışıyor ancak joystiklerde bir sıkıntı var. Ne kadar denersem deneyeyim düzelmiyor. Algılamasında sorun var. Kod bölümüne kodları bırakıyorum, bana yardım edebilir misiniz?
C++:
#include <Arduino.h>
#include <BleGamepad.h>
BleGamepad Gamepad;
#define RIGHT_X_JOYSTICK 34
#define RIGHT_Y_JOYSTICK 35
#define LEFT_X_JOYSTICK 15
#define LEFT_Y_JOYSTICK 13
#define A_BUTON 32
#define B_BUTON 33
#define X_BUTON 25
#define Y_BUTON 26
#define UP_BUTON 21
#define DOWN_BUTON 19
#define RIGHT_BUTON 5
#define LEFT_BUTON 18
void setup() {
pinMode(A_BUTON, INPUT_PULLUP);
pinMode(B_BUTON, INPUT_PULLUP);
pinMode(X_BUTON, INPUT_PULLUP);
pinMode(Y_BUTON, INPUT_PULLUP);
pinMode(UP_BUTON, INPUT_PULLUP);
pinMode(DOWN_BUTON, INPUT_PULLUP);
pinMode(RIGHT_BUTON, INPUT_PULLUP);
pinMode(LEFT_BUTON, INPUT_PULLUP);
Gamepad.begin();
}
void loop() {
if (Gamepad.isConnected()) {
int x_derece_R = analogRead(RIGHT_X_JOYSTICK);
int y_derece_R = analogRead(RIGHT_Y_JOYSTICK);
int x_derece_L = analogRead(LEFT_X_JOYSTICK);
int y_derece_L = analogRead(LEFT_Y_JOYSTICK);
int RightJoystickX = map(x_derece_R, 0, 4095, -32767, 32767);
int RightJoystickY = map(y_derece_R, 0, 4095, -32767, 32767);
int LeftJoystickX = map(x_derece_L, 0, 4095, -32767, 32767);
int LeftJoystickY = map(y_derece_L, 0, 4095, -32767, 32767);
Gamepad.setRightThumb(RightJoystickX, RightJoystickY);
Gamepad.setLeftThumb(LeftJoystickX, LeftJoystickY);
//A
if (digitalRead(A_BUTON) == LOW) {
Gamepad.press(BUTTON_1);
} else {
Gamepad.release(BUTTON_1);
}
//B
if (digitalRead(B_BUTON) == LOW) {
Gamepad.press(BUTTON_2);
} else {
Gamepad.release(BUTTON_2);
}
//X
if (digitalRead(X_BUTON) == LOW) {
Gamepad.press(BUTTON_3);
} else {
Gamepad.release(BUTTON_3);
}
//Y
if (digitalRead(Y_BUTON) == LOW) {
Gamepad.press(BUTTON_5);
} else {
Gamepad.release(BUTTON_5);
}
if (digitalRead(UP_BUTON) == LOW) {
Gamepad.setHat(1);
} else if (digitalRead(DOWN_BUTON) == LOW) {
Gamepad.setHat(5);
} else if (digitalRead(RIGHT_BUTON) == LOW) {
Gamepad.setHat(3);
} else if (digitalRead(LEFT_BUTON) == LOW) {
Gamepad.setHat(7);
} else {
Gamepad.setHat(0);
}
}
delay(10);
}
Son düzenleme: