debounce all buttons - clicking works
This commit is contained in:
@ -23,8 +23,8 @@ Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
|
|||||||
bool doClicking = false;
|
bool doClicking = false;
|
||||||
bool isOn = false;
|
bool isOn = false;
|
||||||
|
|
||||||
unsigned long lcdTimeout = 3000;
|
unsigned long lcdTimeout = 1000;
|
||||||
unsigned long lcdLastSet;
|
unsigned long lcdLastSet = 0;
|
||||||
|
|
||||||
unsigned long debounceDelay = 50;
|
unsigned long debounceDelay = 50;
|
||||||
|
|
||||||
@ -35,160 +35,116 @@ typedef struct
|
|||||||
bool lastState = false;
|
bool lastState = false;
|
||||||
} DebounceButton;
|
} DebounceButton;
|
||||||
|
|
||||||
DebounceButton down;
|
DebounceButton up, down, left, right, select;
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
// Debugging output
|
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
|
|
||||||
// set up the LCD's number of columns and rows:
|
// set columns and rows:
|
||||||
lcd.begin(16, 2);
|
lcd.begin(16, 2);
|
||||||
|
|
||||||
Mouse.begin();
|
Mouse.begin();
|
||||||
Keyboard.begin();
|
Keyboard.begin();
|
||||||
|
|
||||||
Serial.println("Autoclicker3000");
|
Serial.println("AutoClicker3000");
|
||||||
//lcd.print("Autoclicker on!");
|
lcd.print("AutoClicker3000");
|
||||||
//lcd.setBacklight(WHITE);
|
lcd.setBacklight(WHITE);
|
||||||
|
|
||||||
lcdLastSet = millis();
|
lcdLastSet = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
void debounce(DebounceButton &b, bool reading) {
|
void debounce(DebounceButton &b, bool reading) {
|
||||||
lcd.setCursor(0, 0);
|
|
||||||
lcd.print(String(reading));
|
|
||||||
lcd.setCursor(1, 0);
|
|
||||||
lcd.print(String(b.state));
|
|
||||||
// lcd.setCursor(2, 0);
|
|
||||||
// lcd.print(String(reading != b.state));
|
|
||||||
|
|
||||||
// lcd.setCursor(4, 0);
|
|
||||||
// lcd.print(String(b.lastDebounceTime));
|
|
||||||
//
|
|
||||||
// lcd.setCursor(10, 0);
|
|
||||||
// lcd.print(String(millis()));
|
|
||||||
|
|
||||||
// if (reading) {
|
|
||||||
// lcd.print("true ");
|
|
||||||
// } else {
|
|
||||||
// lcd.print("false");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (reading != b.state) {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
// lcd.setCursor(10, 1);
|
|
||||||
if ((millis() - b.lastDebounceTime) > debounceDelay) {
|
if ((millis() - b.lastDebounceTime) > debounceDelay) {
|
||||||
// lcd.print("update");
|
|
||||||
//if (reading != b.state) {
|
|
||||||
b.lastState = b.state;
|
b.lastState = b.state;
|
||||||
b.state = reading;
|
b.state = reading;
|
||||||
//}
|
|
||||||
b.lastDebounceTime = millis();
|
b.lastDebounceTime = millis();
|
||||||
// } else {
|
|
||||||
// lcd.print("------");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// lcd.setCursor(0, 1);
|
|
||||||
// if (b.state) {
|
|
||||||
// lcd.print("true ");
|
|
||||||
// } else {
|
|
||||||
// lcd.print("false");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateLCD(char* msg, int color) {
|
bool triggered(DebounceButton &b) {
|
||||||
lcd.setCursor(0, 1);
|
return b.state and !b.lastState;
|
||||||
lcd.print(msg);
|
|
||||||
lcd.setBacklight(color);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int clickDelay = 100; // millis
|
int clickDelay = 100; // millis
|
||||||
int delayChange = 10; // millis
|
int delayChange = 10; // millis
|
||||||
char modeName[] = "Roblox ";
|
char modeName[] = "Roblox ";
|
||||||
|
|
||||||
//uint8_t i = 0;
|
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
uint8_t buttons = lcd.readButtons();
|
uint8_t buttons = lcd.readButtons();
|
||||||
|
|
||||||
|
debounce(up, buttons & BUTTON_UP);
|
||||||
debounce(down, buttons & BUTTON_DOWN);
|
debounce(down, buttons & BUTTON_DOWN);
|
||||||
|
debounce(left, buttons & BUTTON_LEFT);
|
||||||
|
debounce(right, buttons & BUTTON_RIGHT);
|
||||||
|
debounce(select, buttons & BUTTON_SELECT);
|
||||||
|
|
||||||
if (buttons) {
|
if (buttons) {
|
||||||
// //lcd.clear();
|
// if (buttons & BUTTON_UP) {
|
||||||
// // lcd.setCursor(0, 0);
|
// //Keyboard.write('u');
|
||||||
// // lcd.print(modeName);
|
// Serial.println("UP");
|
||||||
//
|
// lcdLastSet = millis();
|
||||||
//
|
// }
|
||||||
// if (buttons & BUTTON_UP) {
|
//
|
||||||
// //Keyboard.write('u');
|
|
||||||
// Serial.println("UP");
|
if (triggered(down)) {
|
||||||
// lcdLastSet = millis();
|
doClicking = !doClicking;
|
||||||
// }
|
lcd.setCursor(0, 1);
|
||||||
//
|
if (doClicking) {
|
||||||
if (down.state and !down.lastState) {
|
lcd.print("Start clicking ");
|
||||||
doClicking = !doClicking;
|
} else {
|
||||||
lcd.setCursor(0, 1);
|
lcd.print("Stop clicking ");
|
||||||
if (doClicking) {
|
|
||||||
lcd.print("Start clicking ");
|
|
||||||
} else {
|
|
||||||
lcd.print("Stop clicking ");
|
|
||||||
}
|
|
||||||
lcd.setBacklight(YELLOW);
|
|
||||||
lcdLastSet = millis();
|
|
||||||
}
|
}
|
||||||
|
lcd.setBacklight(WHITE);
|
||||||
// if (buttons & BUTTON_LEFT) {
|
lcdLastSet = millis();
|
||||||
// lcd.setCursor(0, 1);
|
|
||||||
// lcd.print("Slower ");
|
|
||||||
// // lcd.setBacklight(GREEN);
|
|
||||||
//
|
|
||||||
// // slow down clicking
|
|
||||||
// if (clickDelay < 1000) {
|
|
||||||
// clickDelay += delayChange;
|
|
||||||
// }
|
|
||||||
// lcdLastSet = millis();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (buttons & BUTTON_RIGHT) {
|
|
||||||
// lcd.setCursor(0, 1);
|
|
||||||
// lcd.print("Faster ");
|
|
||||||
// // lcd.setBacklight(TEAL);
|
|
||||||
//
|
|
||||||
// // speed up clicking
|
|
||||||
// if (clickDelay > 50) {
|
|
||||||
// clickDelay -= delayChange;
|
|
||||||
// }
|
|
||||||
// lcdLastSet = millis();
|
|
||||||
// }
|
|
||||||
// if (buttons & BUTTON_SELECT) {
|
|
||||||
// lcd.setCursor(0, 1);
|
|
||||||
// lcd.print("SELECT ");
|
|
||||||
// // lcd.setBacklight(VIOLET);
|
|
||||||
// lcdLastSet = millis();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
//
|
|
||||||
// if (doClicking) {
|
if (triggered(left)) {
|
||||||
// //digitalWrite(onLedPin, HIGH);
|
lcd.setCursor(0, 1);
|
||||||
// if (isOn) {
|
lcd.print("Slower ");
|
||||||
// lcd.setBacklight(RED);
|
// slow down clicking
|
||||||
// // Mouse.click(MOUSE_LEFT);
|
if (clickDelay < 1000) {
|
||||||
// isOn = false;
|
clickDelay += delayChange;
|
||||||
// delay(clickDelay);
|
}
|
||||||
// } else {
|
lcdLastSet = millis();
|
||||||
// lcd.setBacklight(WHITE);
|
}
|
||||||
// isOn = true;
|
|
||||||
// delay(clickDelay);
|
if (triggered(right)) {
|
||||||
// }
|
lcd.setCursor(0, 1);
|
||||||
// }
|
lcd.print("Faster ");
|
||||||
//
|
// speed up clicking
|
||||||
// // clear second lcd line after a while
|
if (clickDelay > 50) {
|
||||||
// if (millis() > lcdLastSet + lcdTimeout) {
|
clickDelay -= delayChange;
|
||||||
// lcd.setCursor(0, 1);
|
}
|
||||||
// lcd.print(" ");
|
lcdLastSet = millis();
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
if (triggered(select)) {
|
||||||
|
// lcd.setCursor(0, 1);
|
||||||
|
// lcd.print("SELECT ");
|
||||||
|
// // lcd.setBacklight(VIOLET);
|
||||||
|
// lcdLastSet = millis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doClicking) {
|
||||||
|
if (isOn) {
|
||||||
|
lcd.setBacklight(RED);
|
||||||
|
Mouse.click(MOUSE_LEFT);
|
||||||
|
isOn = false;
|
||||||
|
delay(clickDelay);
|
||||||
|
} else {
|
||||||
|
lcd.setBacklight(WHITE);
|
||||||
|
isOn = true;
|
||||||
|
delay(clickDelay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// clear second lcd line after a while
|
||||||
|
if (lcdLastSet > 0 && millis() > lcdLastSet + lcdTimeout) {
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
lcd.print(" ");
|
||||||
|
lcdLastSet = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// delay(3);
|
// delay(3);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user