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]