Arduino Xinput Library X360 controller Problem

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);    
}

Scheinbar kennt sich keiner mit der Library aus. :frowning:
Die Library für das Joystick funktioniert auf der selben basis.

Ich kenne die ClickEncoder-library nicht und irgendwie veranstaltet die mir auch komische Dinge.

Ich bevorzuge die library NewEncoder.h

Die library NewEncoder erfasst die Encoder-Impulse intern per Interrupts und man kann dann in seinem code zu jedem Zeitpunkt den Zählerstand und zwei weitere functions
upclick und downclick abfragen.

vgs

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.