arduino stuffs
Diffstat (limited to 'steer/buttons.cpp')
-rw-r--r--steer/buttons.cpp69
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