#include <LiquidCrystal.h>
#include <EncButton.h>
const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Button BTN1(6);
Button BTN2(10);
unsigned int counter = 1000;
unsigned long pressTmr;
byte timeMultiplier = 0;
void setup() {
lcd.begin(16, 2);
lcd.print("TEST");
Serial.begin(9600);
}
void loop() {
BTN1.tick();
BTN2.tick();
lcd.setCursor(0, 1);
lcd.print("Pause:");
lcd.setCursor(6,1);
counter = constrain(counter,0, 30000);
if (counter==1000) {lcd.print(counter); lcd.print(" "); }
if(BTN1.press()) {
lcd.setCursor(6,1);
counter++;
lcd.print(counter);lcd.print(" ");
}
if(BTN2.press() && counter > 0) {
lcd.setCursor(6,1);
counter--;
lcd.print(counter); lcd.print(" ");
}
if(BTN1.holding()) {
if (millis()-pressTmr>650) {
pressTmr = millis();
timeMultiplier++; //do every 3s
//Serial.println("reached 3s.."+ String(timeMultiplier));
}
btn1Holding(timeMultiplier);
}
if(BTN1.release()) timeMultiplier=0;
if(counter>0 && BTN2.holding()) {
if (millis()-pressTmr>650) {
pressTmr = millis();
timeMultiplier++; //do every 3s
//Serial.println("- reached 3s.."+ String(timeMultiplier));
}
btn2Holding(timeMultiplier);
}
if(BTN2.release()) timeMultiplier=0;
delay(20);
}
int btn1Holding(byte multiplier) {
lcd.setCursor(6,1);
counter+=multiplier;
lcd.print(counter);
lcd.print(" ");
return counter;
}
int btn2Holding(byte multiplier) {
lcd.setCursor(6,1);
if(counter>multiplier) counter-=multiplier;
else counter = 0;
lcd.print(counter);
Serial.println("- reached 3s.."+ String(multiplier));
lcd.print(" ");
return counter;
}