#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define ENCODER_CLKM 12
#define ENCODER_DTM 11
#define ENCODER_CLKU 15
#define ENCODER_DTU 16
#define ENCODER_SWU A3
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
int z = 0;
int y = 0;
int h = 0;
int p =0;
int q =0;
int potL = A2;
int L=0;
int lastClkM = HIGH;
int lastClkU = HIGH;
int laststart = HIGH;
const int pin13 = 13 ;
void setup() {
Serial.begin(9600);
// Init
lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(3, 0);
lcd.print("Auto-Pull");
lcd.setCursor(0, 1);
lcd.print("Stops at L + 7inxx");
pinMode(pin13, OUTPUT);
pinMode(potL, INPUT);
pinMode(ENCODER_SWU, INPUT);
}
void loop() {
// UI encoder
int newClkU = digitalRead(ENCODER_CLKU);
if (newClkU != lastClkU) {
// There was a change on the CLK pin
lastClkU = newClkU;
int dtValueU = digitalRead(ENCODER_DTU);
if (newClkU == LOW && dtValueU == HIGH) { q= q+1;
lcd.setCursor(0, 0);
lcd.print("Length in Feet ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(q);
}
if (newClkU == LOW && dtValueU == LOW) { q = q-1;
lcd.setCursor(0, 0);
lcd.print("Length in Feet ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(q);
}
}
// motor encoder
int newClkM = digitalRead(ENCODER_CLKM);
if (newClkM != lastClkM) {
// There was a change on the CLK pin
lastClkM = newClkM;
int dtValueM = digitalRead(ENCODER_DTM);
if (newClkM == LOW && dtValueM == HIGH) { p= p+1;
Serial.println(p);
}
if (newClkM == LOW && dtValueM == LOW) { p = p-1;
Serial.println(p);
}
}
if(h==1){ digitalWrite(pin13,HIGH);
if(p == q+7){h=0;digitalWrite(pin13,LOW);p=0;}
}
// motor(led)
//switch trigger
int start = digitalRead(ENCODER_SWU);
if (start != laststart){ laststart = start;
if (laststart == HIGH){h = 1;}}
}