hallo ich möchte eine mehrfachschalter so schalten das er von aus (stufe 0) an (stufe1) an (stufe2(stufe1 ist auch an)) beim zurück schalten soll er von (stufe 2 an) auf aus (stufe1 ist noch an ) von (stufe 1 an) auf aus
ich hoffen man versteht was ich mein es soll für eine blinkerschalter sein dem man am pc nutzen kann als joystick es geht schon alles nur das wenn ich das licht im spiel aus schalten will erst wieder aus und dann wieder einschalten muss am joystick
ich arbeite mit <Joystick.h>
ich nutze einen Arduino Leonardo
#include <Joystick.h>
const uint8_t buttonCount = 13;
Joystick_ controller(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD, buttonCount,
0, true, true, false,
false, false, false,
false, false, false,
false, false);
int const BTN_A_PIN = 1;
int const BTN_B_PIN = 2;
int const BTN_C_PIN = 3;
int const BTN_D_PIN = 4;
int const BTN_E_PIN = 5;
int const BTN_F_PIN = 6;
int const BTN_G_PIN = 7;
int const BTN_K_PIN = 8;
int const BTN_I_PIN = 9;
int const BTN_J_PIN = 10;
int const BTN_O_PIN = 11;
int const BTN_P_PIN = 12;
int const BTN_W_PIN = 13;
int const AXIS_X_PIN = A0;
int const AXIS_Y_PIN = A1;
int const buttonPins[buttonCount] = {
BTN_A_PIN,
BTN_B_PIN,
BTN_C_PIN,
BTN_D_PIN,
BTN_E_PIN,
BTN_F_PIN,
BTN_G_PIN,
BTN_K_PIN,
BTN_I_PIN,
BTN_J_PIN,
BTN_O_PIN,
BTN_P_PIN,
BTN_W_PIN
};
int lastButtonValue[buttonCount];
int lastXAxisValue = -1;
int lastYAxisValue = -1;
void setup()
{
controller.setYAxisRange(0, 1023);
controller.setYAxisRange(1023, 0);
controller.begin(false);
for (int i = 0; i < buttonCount; i++)
{
pinMode(buttonPins[i], INPUT_PULLUP);
lastButtonValue[i] = -1;
}
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
}
void loop()
{
bool sendUpdate = false;
for (int i = 0; i < buttonCount; i++)
{
const int buttonValue = digitalRead(buttonPins[i]);
if (buttonValue != lastButtonValue[i])
{
controller.setButton(i, !buttonValue);
lastButtonValue[i] = buttonValue;
sendUpdate = true;
}
}
const int currentXAxisValue = analogRead(AXIS_X_PIN);
if (currentXAxisValue != lastXAxisValue)
{
controller.setXAxis(currentXAxisValue);
lastXAxisValue = currentXAxisValue;
sendUpdate = true;
}
const int currentYAxisValue = analogRead(AXIS_Y_PIN);
if (currentYAxisValue != lastYAxisValue)
{
controller.setYAxis(currentYAxisValue);
lastYAxisValue = currentYAxisValue;
sendUpdate = true;
}
if (sendUpdate)
{
controller.sendState();
}
delay(50);
}
ich hoffe ihr könnt mir helfen lg Jens
