Skip to content

Commit efca2b4

Browse files
Merge pull request #71 from kevinmce/main
Modify wheel lift logic for tilt & lift scenarios.
2 parents 73b011b + fa47e59 commit efca2b4

1 file changed

Lines changed: 23 additions & 2 deletions

File tree

Firmware/LowLevel/src/main.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
#define STATUS_CYCLETIME 100 // cycletime for refresh analog and digital Statusvalues
3232
#define UI_SET_LED_CYCLETIME 1000 // cycletime for refresh UI status LEDs
3333

34-
#define LIFT_EMERGENCY_MILLIS 500 // Time for wheels to be lifted in order to count as emergency. This is to filter uneven ground.
34+
#define TILT_EMERGENCY_MILLIS 2500 // Time for a single wheel to be lifted in order to count as emergency. This is to filter uneven ground.
35+
#define LIFT_EMERGENCY_MILLIS 100 // Time for both wheels to be lifted in order to count as emergency. This is to filter uneven ground.
3536
#define BUTTON_EMERGENCY_MILLIS 20 // Time for button emergency to activate. This is to debounce the button if triggered on bumpy surfaces
3637

3738
// Define to stream debugging messages via USB
@@ -86,6 +87,7 @@ unsigned long last_heartbeat_millis = 0;
8687
unsigned long last_UILED_millis = 0;
8788

8889
unsigned long lift_emergency_started = 0;
90+
unsigned long tilt_emergency_started = 0;
8991
unsigned long button_emergency_started = 0;
9092

9193
// Stock UI
@@ -141,7 +143,8 @@ void updateEmergency() {
141143

142144
uint8_t emergency_state = 0;
143145

144-
bool is_lifted = emergency1 || emergency2;
146+
bool is_tilted = emergency1 || emergency2;
147+
bool is_lifted = emergency1 && emergency2;
145148
bool stop_pressed = emergency3 || emergency4;
146149

147150
if (is_lifted) {
@@ -173,6 +176,24 @@ void updateEmergency() {
173176
emergency_state |= 0b10000;
174177
}
175178

179+
if (is_tilted) {
180+
// We just tilted, store the timestamp
181+
if (tilt_emergency_started == 0) {
182+
tilt_emergency_started = millis();
183+
}
184+
} else {
185+
// Not tilted, reset the time
186+
tilt_emergency_started = 0;
187+
}
188+
189+
if (tilt_emergency_started > 0 && (millis() - tilt_emergency_started) >= TILT_EMERGENCY_MILLIS) {
190+
// Emergency bit 2 (lift wheel 1)set?
191+
if (emergency1)
192+
emergency_state |= 0b01000;
193+
// Emergency bit 1 (lift wheel 2)set?
194+
if (emergency2)
195+
emergency_state |= 0b10000;
196+
}
176197
if (button_emergency_started > 0 && (millis() - button_emergency_started) >= BUTTON_EMERGENCY_MILLIS) {
177198
// Emergency bit 2 (stop button) set?
178199
if (emergency3)

0 commit comments

Comments
 (0)