walk mode working forwards and backwards
This commit is contained in:
@ -36,31 +36,43 @@ DebounceButton up, down, left, right, select;
|
||||
|
||||
typedef enum {
|
||||
MODE_LEFT_CLICK,
|
||||
MODE_WALK_FORWARD,
|
||||
MODE_WALKING,
|
||||
MODE_COUNT
|
||||
} Mode;
|
||||
Mode currMode = MODE_LEFT_CLICK;
|
||||
|
||||
char *modeNames[] = {
|
||||
"Left click ",
|
||||
"Walk forward "
|
||||
"Click mode ",
|
||||
"Walking mode "
|
||||
};
|
||||
|
||||
int modeColors[] = {
|
||||
WHITE,
|
||||
YELLOW
|
||||
};
|
||||
|
||||
extern void clickActivate();
|
||||
extern void clickSlower();
|
||||
extern void clickFaster();
|
||||
|
||||
extern void walkForward();
|
||||
extern void walkBackward();
|
||||
|
||||
void (*upButtonFuncs[])() = { NULL, NULL };
|
||||
void (*upButtonFuncs[])() = { NULL, walkForward };
|
||||
void (*downButtonFuncs[])() = { clickActivate, walkBackward };
|
||||
void (*leftButtonFuncs[])() = { clickSlower, NULL };
|
||||
void (*rightButtonFuncs[])() = { clickFaster, NULL };
|
||||
|
||||
extern void cancelClicking();
|
||||
extern void cancelWalking();
|
||||
|
||||
void (*cancelModeFuncs[])() = { cancelClicking, cancelWalking };
|
||||
|
||||
bool doClicking = false;
|
||||
unsigned long lastClickTime = 0;
|
||||
int clickColor = 0;
|
||||
|
||||
bool doWalking = false;
|
||||
|
||||
|
||||
void setup() {
|
||||
@ -75,7 +87,7 @@ void setup() {
|
||||
lcd.print("AutoClicker 3000");
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("For Jasper");
|
||||
lcd.setBacklight(YELLOW);
|
||||
lcd.setBacklight(VIOLET);
|
||||
|
||||
lcdLastSet = millis();
|
||||
}
|
||||
@ -130,10 +142,14 @@ void loop() {
|
||||
}
|
||||
|
||||
if (triggered(select)) {
|
||||
if (cancelModeFuncs[currMode] != NULL) {
|
||||
cancelModeFuncs[currMode]();
|
||||
}
|
||||
changeMode();
|
||||
}
|
||||
}
|
||||
|
||||
// TODO make into mode-specific action func
|
||||
if (doClicking) {
|
||||
unsigned long time = millis();
|
||||
if ((unsigned long)(time - lastClickTime) >= clickDelay) {
|
||||
@ -159,10 +175,16 @@ void loop() {
|
||||
}
|
||||
|
||||
void changeMode() {
|
||||
// TODO cancel current mode before changing (stop clicking)
|
||||
currMode = (currMode + 1) % MODE_COUNT;
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(modeNames[currMode]);
|
||||
lcd.setBacklight(modeColors[currMode]);
|
||||
}
|
||||
|
||||
void updateLCD(char* msg) {
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print(msg);
|
||||
lcdLastSet = millis();
|
||||
}
|
||||
|
||||
// mode functions
|
||||
@ -200,8 +222,41 @@ void clickFaster() {
|
||||
lcdLastSet = millis();
|
||||
}
|
||||
|
||||
void walkBackward() {
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("Walk backward ");
|
||||
lcdLastSet = millis();
|
||||
void cancelClicking() {
|
||||
doClicking = false;
|
||||
}
|
||||
|
||||
//
|
||||
// walking mode
|
||||
//
|
||||
void walkForward() {
|
||||
if (!doWalking) {
|
||||
walk('w', "Forward ");
|
||||
} else {
|
||||
cancelWalking();
|
||||
updateLCD("Stop ");
|
||||
}
|
||||
}
|
||||
|
||||
void walkBackward() {
|
||||
if (!doWalking) {
|
||||
walk('s', "Backwards ");
|
||||
} else {
|
||||
cancelWalking();
|
||||
updateLCD("Stop ");
|
||||
}
|
||||
}
|
||||
|
||||
void walk(char key, char* msg) {
|
||||
cancelWalking();
|
||||
|
||||
Keyboard.press(key);
|
||||
doWalking = true;
|
||||
|
||||
updateLCD(msg);
|
||||
}
|
||||
|
||||
void cancelWalking() {
|
||||
doWalking = false;
|
||||
Keyboard.releaseAll();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user