@@ -43,6 +43,12 @@ void loop() {
43
43
}
44
44
}
45
45
46
+ // per experience, this is the max speed backward and forward
47
+ #define MAX_BACKWARD 77
48
+ #define MAX_FORWARD 177
49
+ #define MIDDLE_POINT 127
50
+ #define CONTROLLER_RATIO 656
51
+
46
52
void process_buttons () {
47
53
for (uint8_t i = 0 ; i < 4 ; i++) {
48
54
if (Xbox.Xbox360Connected [i]) {
@@ -58,22 +64,25 @@ void process_buttons() {
58
64
if (Xbox.getButtonClick (BACK, i) || Xbox.getButtonClick (XBOX, i) || Xbox.getButtonClick (SYNC, i)) {
59
65
controlling = 0 ;
60
66
// stop everything
61
- set_motor (0 , 0 );
67
+ set_motor (MIDDLE_POINT, MIDDLE_POINT );
62
68
Xbox.setLedBlink (ALL, i);
63
69
Serial.print (F (" Battery: " ));
64
70
Serial.print (Xbox.getBatteryLevel (i)); // The battery level in the range 0-3
65
71
return ;
66
72
}
67
73
68
- int16_t lh = Xbox.getAnalogHat (LeftHatY, i);
69
- int16_t rh = Xbox.getAnalogHat (RightHatY, i);
74
+ if (Xbox.getButtonPress (L2, i) && Xbox.getButtonPress (R2, i)) {
75
+ set_motor (MAX_FORWARD, MAX_FORWARD);
76
+ } else if (Xbox.getButtonPress (L2, i)) {
77
+ set_motor (MAX_FORWARD, MAX_BACKWARD);
78
+ } else if (Xbox.getButtonPress (R2, i)) {
79
+ set_motor (MAX_BACKWARD, MAX_FORWARD);
80
+ } else {
81
+ int16_t lh = Xbox.getAnalogHat (LeftHatY, i);
82
+ int16_t rh = Xbox.getAnalogHat (RightHatY, i);
70
83
71
- set_motor (c2m_scale (lh), c2m_scale (rh));
72
- // Serial.print(F("L: "));
73
- // Serial.print(lh);
74
- // Serial.print(F("\t\tR: "));
75
- // Serial.print(rh);
76
- // Serial.println();
84
+ set_motor (c2m_scale (lh), c2m_scale (rh));
85
+ }
77
86
}
78
87
}
79
88
}
@@ -88,13 +97,12 @@ uint8_t c2m_scale(int16_t stick) {
88
97
}
89
98
90
99
// make it range from 0 to 250 or so
91
- uint8_t ret = stick/656 + 127 ;
100
+ uint8_t ret = stick/CONTROLLER_RATIO + MIDDLE_POINT ;
92
101
93
102
return ret;
94
103
}
95
104
96
105
void set_motor (uint8_t left, uint8_t right) {
97
- // FIXME -- do motor control here
98
106
Serial.print (F (" L: " ));
99
107
Serial.print (left);
100
108
Serial.print (F (" \t\t R: " ));
0 commit comments