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