diff --git a/AutoClicker3000.ino b/AutoClicker3000.ino index 1871932..9cea755 100644 --- a/AutoClicker3000.ino +++ b/AutoClicker3000.ino @@ -23,8 +23,8 @@ Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); bool doClicking = false; bool isOn = false; -unsigned long lcdTimeout = 3000; -unsigned long lcdLastSet; +unsigned long lcdTimeout = 1000; +unsigned long lcdLastSet = 0; unsigned long debounceDelay = 50; @@ -35,160 +35,116 @@ typedef struct bool lastState = false; } DebounceButton; -DebounceButton down; +DebounceButton up, down, left, right, select; void setup() { - // Debugging output Serial.begin(9600); - // set up the LCD's number of columns and rows: + // set columns and rows: lcd.begin(16, 2); Mouse.begin(); Keyboard.begin(); - Serial.println("Autoclicker3000"); - //lcd.print("Autoclicker on!"); - //lcd.setBacklight(WHITE); + Serial.println("AutoClicker3000"); + lcd.print("AutoClicker3000"); + lcd.setBacklight(WHITE); lcdLastSet = millis(); } 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) { -// lcd.print("update"); - //if (reading != b.state) { b.lastState = b.state; b.state = reading; - //} 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) { - lcd.setCursor(0, 1); - lcd.print(msg); - lcd.setBacklight(color); +bool triggered(DebounceButton &b) { + return b.state and !b.lastState; } int clickDelay = 100; // millis int delayChange = 10; // millis char modeName[] = "Roblox "; -//uint8_t i = 0; - void loop() { uint8_t buttons = lcd.readButtons(); + debounce(up, buttons & BUTTON_UP); debounce(down, buttons & BUTTON_DOWN); + debounce(left, buttons & BUTTON_LEFT); + debounce(right, buttons & BUTTON_RIGHT); + debounce(select, buttons & BUTTON_SELECT); - if (buttons) { - // //lcd.clear(); - // // lcd.setCursor(0, 0); - // // lcd.print(modeName); - // - // - // if (buttons & BUTTON_UP) { - // //Keyboard.write('u'); - // Serial.println("UP"); - // lcdLastSet = millis(); - // } - // - if (down.state and !down.lastState) { - doClicking = !doClicking; - lcd.setCursor(0, 1); - if (doClicking) { - lcd.print("Start clicking "); - } else { - lcd.print("Stop clicking "); - } - lcd.setBacklight(YELLOW); - lcdLastSet = millis(); + if (buttons) { + // if (buttons & BUTTON_UP) { + // //Keyboard.write('u'); + // Serial.println("UP"); + // lcdLastSet = millis(); + // } + // + + if (triggered(down)) { + doClicking = !doClicking; + lcd.setCursor(0, 1); + if (doClicking) { + lcd.print("Start clicking "); + } else { + lcd.print("Stop clicking "); } - - // if (buttons & BUTTON_LEFT) { - // 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(); - // } + lcd.setBacklight(WHITE); + lcdLastSet = millis(); } - // - // if (doClicking) { - // //digitalWrite(onLedPin, HIGH); - // 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 (millis() > lcdLastSet + lcdTimeout) { - // lcd.setCursor(0, 1); - // lcd.print(" "); - // } + + if (triggered(left)) { + lcd.setCursor(0, 1); + lcd.print("Slower "); + // slow down clicking + if (clickDelay < 1000) { + clickDelay += delayChange; + } + lcdLastSet = millis(); + } + + if (triggered(right)) { + lcd.setCursor(0, 1); + lcd.print("Faster "); + // speed up clicking + if (clickDelay > 50) { + clickDelay -= delayChange; + } + 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); }