arduino stuffs
Diffstat (limited to 'steer/buttons.cpp')
| -rw-r--r-- | steer/buttons.cpp | 69 |
1 files changed, 43 insertions, 26 deletions
diff --git a/steer/buttons.cpp b/steer/buttons.cpp index 8372941..17c9651 100644 --- a/steer/buttons.cpp +++ b/steer/buttons.cpp @@ -1,46 +1,44 @@ #include "buttons.h" #include "Joystick.h" -// #include "Streaming.h" +#include "Streaming.h" -namespace Controller { -/// vars -unsigned int last_x_value = 1023 / 2; -unsigned int last_accel_value = 0; -unsigned int last_brake_value = LOW; // still digital +#define INVERT == HIGH ? LOW : HIGH +#define TEXT == HIGH ? "high" : "low" +namespace Controller { /// pins #define STEER_X A0 -#define ACCEL A1 +#define ACCEL 10 +#define ANY 7 // used for A in gamepad mode, and x in button mode (a accel)```` #define BRAKE 8 #ifdef GAMEPAD_USE_BUTTONS -#define PAD_A 0 #define PAD_B 1 +#define PAD_X 2 #endif #ifdef MODE_STEERING_WHEEL -Joystick_ Gamepad(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, false, false, false, false, false, - false, false, false, true, true, true); +Joystick_ Gamepad(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 16, 1, false, false, true, false, false, + true, false, false, true, true, true); #elif defined(MODE_GAMEPAD) -#ifdef GAMEPAD_USE_TRIGGERS -Joystick_ Gamepad(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD, 0, 0, true, true, true, false, false, true, - false, false, false, false, false); -#elif defined(GAMEPAD_USE_BUTTONS) -Joystick_ Gamepad(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD, 2, 0, true, true, false, false, false, false, +#define PAD_A 0 +Joystick_ Gamepad(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD, 10, 0, true, true, true, true, true, true, false, false, false, false, false); #endif -#endif void begin() { pinMode(STEER_X, INPUT); - pinMode(ACCEL, INPUT); + pinMode(ACCEL, INPUT_PULLUP); pinMode(BRAKE, INPUT_PULLUP); + pinMode(ANY, INPUT_PULLUP); Gamepad.begin(); #ifdef MODE_STEERING_WHEEL Gamepad.setBrakeRange(0, 1); - Gamepad.setSteering(last_x_value); + Gamepad.setSteering(1023 / 2); + Gamepad.setSteeringRange(0, 1); #elif defined(MODE_GAMEPAD) - Gamepad.setXAxis(last_x_value); + Gamepad.setRzAxisRange(0, 1); + Gamepad.setXAxis(1023 / 2); Gamepad.setYAxis(1023 / 2); #ifdef GAMEPAD_USE_TRIGGERS Gamepad.setZAxisRange(0, 1); @@ -48,15 +46,29 @@ void begin() { #endif } -inline bool boolify(unsigned int analog) { return analog < (1023 / 2) ? 0 : 1; } +void any() { + static uint8_t last_any = LOW; + uint8_t new_any = digitalRead(ANY) INVERT; + if (new_any != last_any) { + Serial << "ANY set to " << (new_any TEXT) << endl; + last_any = new_any; +#ifdef GAMEPAD_USE_BUTTONS + Gamepad.setButton(PAD_X, new_any); +#else + Gamepad.setButton(PAD_A, new_any); +#endif + } +} void accel() { - unsigned int new_accel = analogRead(ACCEL); + static uint8_t last_accel_value = LOW; // my pot broke so were back to digital + uint8_t new_accel = digitalRead(ACCEL) INVERT; if (new_accel != last_accel_value) { + Serial << "ACCEL set to " << (new_accel TEXT) << endl; last_accel_value = new_accel; #ifdef MODE_GAMEPAD #ifdef GAMEPAD_USE_BUTTONS - Gamepad.setButton(PAD_A, boolify(new_accel)); + Gamepad.setButton(PAD_A, new_accel); #elif defined(GAMEPAD_USE_TRIGGERS) Gamepad.setRzAxis(new_accel); #endif @@ -68,8 +80,10 @@ void accel() { /// @brief still a button void brake() { - unsigned int new_brake = digitalRead(BRAKE) == HIGH ? LOW : HIGH; + static uint8_t last_brake_value = LOW; // still digital + uint8_t new_brake = digitalRead(BRAKE) INVERT; if (new_brake != last_brake_value) { + Serial << "BRAKE set to " << (new_brake TEXT) << endl; last_brake_value = new_brake; #ifdef MODE_GAMEPAD #ifdef GAMEPAD_USE_BUTTONS @@ -84,8 +98,10 @@ void brake() { } void x() { - unsigned int new_x = analogRead(STEER_X); + static uint16_t last_x_value = 1023 / 2; + uint16_t new_x = analogRead(STEER_X); if (new_x != last_x_value) { + // Serial << "X set to " << new_x << endl; last_x_value = new_x; #ifdef MODE_GAMEPAD Gamepad.setXAxis(new_x); @@ -96,9 +112,10 @@ void x() { } void send() { + x(); + any(); accel(); brake(); - x(); } -} // namespace Controller
\ No newline at end of file +} // namespace Controller |