//--------------------------------------------------------------------
// Sample code by Matthew Heironimus
// 2016-11-24
//--------------------------------------------------------------------
// Gear shifter for MAN lever and ETS2/ATS
//
//Joystick.setButton(index, currentButtonState);
//lastButtonState[index] = currentButtonState;
//--------------------------------------------------------------------
/*
#include <Joystick.h>
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
3, 0, // Button Count, Hat Switch Count
false, false, 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); //B
pinMode(3, INPUT_PULLUP); //A
pinMode(4, INPUT_PULLUP); //X
pinMode(5, INPUT_PULLUP); //A
pinMode(6, INPUT_PULLUP); //B
//Joystick.begin(); // Initialize Joystick Library
Serial.begin(115200);
}
// Last state of the buttons
int lastButtonState_a1 = 0;
int lastButtonState_a2 = 0;
int lastButtonState_b1 = 0;
int lastButtonState_b2 = 0;
int lastButtonState_x = 0;
int currentButtonState;
void loop() {
currentButtonState = digitalRead(3);
if (currentButtonState == 0 && lastButtonState_a1 == 0){
Serial.print("A = ");Serial.println(1);
//Joystick.setButton(0, 1);
delay(200);
Serial.print("A = ");Serial.println(0);
//Joystick.setButton(0, 0);
lastButtonState_a1 = 1;
lastButtonState_a2 = 0;
}
currentButtonState = digitalRead(5);
if (currentButtonState == 0 && lastButtonState_a2 == 0){
Serial.print("A = ");Serial.println(1);
//Joystick.setButton(0, 1);
delay(200);
Serial.print("A = ");Serial.println(0);
//Joystick.setButton(0, 0);
lastButtonState_a1 = 0;
lastButtonState_a2 = 1;
}
currentButtonState = digitalRead(2);
if (currentButtonState == 0 && lastButtonState_b1 == 0){
Serial.print("B = ");Serial.println(1);
//Joystick.setButton(1, 1);
delay(200);
Serial.print("B = ");Serial.println(0);
//Joystick.setButton(1, 0);
lastButtonState_b1 = 1;
lastButtonState_b2 = 0;
}
currentButtonState = digitalRead(6);
if (currentButtonState == 0 && lastButtonState_b2 == 0){
Serial.print("B = ");Serial.println(1);
//Joystick.setButton(1, 1);
delay(200);
Serial.print("B = ");Serial.println(0);
//Joystick.setButton(1, 0);
lastButtonState_b1 = 0;
lastButtonState_b2 = 1;
}
currentButtonState = !digitalRead(4);
if (currentButtonState != lastButtonState_x){
//Joystick.setButton(index, currentButtonState);
Serial.print("X = ");Serial.println(currentButtonState);
lastButtonState_x = currentButtonState;
}
}