Hallo,
Kennt sich jemand mit der Xinput Library aus.
[GitHub - dmadison/ArduinoXInput: XInput library for USB capable Arduino boards]GitHub - dmadison/ArduinoXInput: XInput library for USB capable Arduino boards)
Folgendes, ich habe einen Rotary Encoder möchte aber die Dpad belegung für links und rechts mit diesen Encoder machen. Also links rum ein klick oder rechts rum ein klick.
Die Encoder software funktioniert im Monitor ohne Probleme wenn ich sie mir anzeigen lasse,
nur der X360 Controller als Dpad erkennt nicht immer die schritte. Kann das ein Zeit Problem sein? Hab da aber auch schon Pausen rein genommen und das ganze auch mit XInput.release(DPAD_LEFT) probiert.
Habe das schon viel probiert aber komme irgendwie nicht weiter.
#include <XInput.h>
#include <ClickEncoder.h>
#include <TimerOne.h>
#include <MD_REncoder.h>
#include <JC_Button.h>
const boolean UseTriggerButtons = true; // set to false if using analog triggers
unsigned long previousMillis = 0;
const long interval = 1000;
ClickEncoder *encoder;
int16_t last, value;
void timerIsr() {
encoder->service();
}
void setup() {
//Serial.begin(9600);
encoder = new ClickEncoder(0, 1, 4, 4);
Timer1.initialize(100);
Timer1.attachInterrupt(timerIsr);
last = -1;
XInput.setAutoSend(true); // Wait for all controls before sending
XInput.begin();
}
void loop() {
unsigned long currentMillis = millis();
value += encoder->getValue();
if (value > last)
{
encoderLEFT();
Pause_encoderLEFT();
}
if (value < last)
{
encoderRIGHT();
Pause_encoderRIGHT();
}
last = value;
}
void encoderLEFT(){
XInput.setButton(DPAD_LEFT, 1);
}
void encoderRIGHT(){
XInput.setButton(DPAD_RIGHT, 1);
}
void Pause_encoderLEFT(){
//XInput.setButton(DPAD_LEFT, 0);
}
void Pause_encoderRIGHT(){
//XInput.setButton(DPAD_RIGHT, 0);
}