#include <SimpleRotary.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <MD_REncoder.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//SimpleRotary rotary(3,4,5);
MD_REncoder R = MD_REncoder(3, 4);
int CW=100;
unsigned long timeRef1,timeRef2,timeRef3 ;
int waitingTime =500, applicationTime = 200;
void setup(){
lcd.begin(16,02);
lcd.backlight();
R.begin();
Serial.begin(115200);
pinMode(2, INPUT);
pinMode(13, OUTPUT);
digitalWrite(13,LOW);
CW = EEPROM.read(0);
lcd.setCursor(2,0);
lcd.print("TIMER");
lcd.setCursor(4,1);
lcd.print(CW);
}
void loop(){
uint8_t x = R.read();
if (x != DIR_NONE){
lcd.clear();
x == DIR_CW ? CW =CW+100 : CW = CW -100 ;
if (CW >=1000) CW = 100;
if (CW <=0) CW =900;
lcd.setCursor(2,0);
lcd.print("TIMER");
lcd.setCursor(4,1);
lcd.print(CW);
EEPROM.write(0,(CW/100));
}
applicationTime = CW;
//Serial.print(applicationTime);
/*
byte i;
// 0 = not turning, 1 = CW, 2 = CCW
i = rotary.rotate();
lcd.setCursor(2,0);
lcd.print("TIMER");
lcd.setCursor(4,1);
lcd.print(applicationTime);
if ( i == 1 ) {
lcd.clear();
CW++;
if(CW>=10) CW =1;
applicationTime = CW * 100;
lcd.setCursor(4,1);
lcd.print(applicationTime);
}
if ( i == 2 ) {
lcd.clear();
CW--;
if(CW<=0)CW=9;
applicationTime = CW * 100;
lcd.setCursor(4,1);
lcd.print(applicationTime);
}
*/
if(digitalRead(2)==HIGH){
while(digitalRead(2)==HIGH){
timeRef1=millis();
while((millis()- timeRef1) < waitingTime){
digitalWrite(13,LOW);
}
timeRef2 = millis();
while ((millis()- timeRef2)<applicationTime && digitalRead(2)==HIGH){
digitalWrite(13, HIGH);
}
digitalWrite(13, LOW);
timeRef3=millis();
while((millis()-timeRef3)<50){
if(digitalRead(2)==HIGH){
timeRef3=millis();
}
}
}
}
}