Tramprotation till joystick?

I korthet:

Försöker få ett input att hålla i "längre".
Har ett arduino leonardo med en hall effect sensor som jag försöker få att agera gaspedal eller joystick.
Problemet är inte att få in själva signalen till datorn utan att den är för kort.
Magneterna (tre st) till sensorn sitter monterade på vevarmen till en cykel.

Den kod jag har använt som har funkat bäst hittills (inte skriven av mig själv):

#include <Joystick.h>

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD,
  1, 0,                  // Button Count, Hat Switch Count
  true, true, false,     // X and Y, but no Z Axis
  false, false, false,   // No Rx, Ry, or Rz
  false, false,          // No rudder or throttle
  false, false, false);  // No accelerator, brake, or steering

void setup() {
  // Initialize Button Pins
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);

  // Initialize Joystick Library
  Joystick.begin();
  Joystick.setXAxisRange(-1, 1);
  Joystick.setYAxisRange(-1, 1);
}

// Last state of the buttons
int lastButtonState[5] = {0,0,0,0,0};

void loop() {

  // Read pin values
  for (int index = 0; index < 5; index++)
  {
    int currentButtonState = !digitalRead(index + 2);
    if (currentButtonState != lastButtonState[index])
    {
      switch (index) {
        case 0: // UP
          if (currentButtonState == 1) {
            Joystick.setYAxis(-1);
          } else {
            Joystick.setYAxis(0);
          }
          break;
        case 1: // RIGHT
          if (currentButtonState == 1) {
            Joystick.setXAxis(1);
          } else {
            Joystick.setXAxis(0);
          }
          break;
        case 2: // DOWN
          if (currentButtonState == 1) {
            Joystick.setYAxis(1);
          } else {
            Joystick.setYAxis(0);
          }
          break;
        case 3: // LEFT
          if (currentButtonState == 1) {
            Joystick.setXAxis(-1);
          } else {
            Joystick.setXAxis(0);
          }
          break;
        case 4: // FIRE
          Joystick.setButton(0, currentButtonState);
          break;
      }
      lastButtonState[index] = currentButtonState;
    }
  }

  delay(10);
}

Har enbart använt en utav "pinsen".
Har även provat ett antal andra koder, samt lagt till, tagit bort och ändrat i koderna utan någon större framgång.
Så det jag försöker få till (och behöver hjälp med) är alltså ett input som håller i sig längre än en halv sekund, samt går tillbaka till nolläge efteråt.

Om projektet i sig (kanske onödigt vetande för själva problemet):
Att med en cykels tramprörelse få en lastbil i euro truck simulator 2 att åka framåt.
Styr med ratt och har mus och tangentbord bredvid så det är bara själva framåtrörelsen som behöver magneter och sensor. Bromsar med musen så den delen behöver inte heller tas med i ekvationen.

Visste att just den här delen i projektet skulle bli det största farthindret, men har letat i flera timmar efter en färdig lösning utan att hitta nåt mer än just arduino-projekt.

​
[pre]​

[/pre]

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