//Automatic Gates 1.0
#include <EncButton.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
EncButton<EB_TICK, 7> btn1(INPUT_PULLUP);
EncButton<EB_TICK, 6> btn2(INPUT_PULLUP);
int LED1 = 4;
int LED2 = 3;
int LED3 = 2;
uint32_t tmr, tmr1, tmr2;
uint16_t prd1 = 500, prd2 = 1000;
bool flag1, flag2, btn10, state1, state2, state3;
unsigned long gate1 = 3000; // gate 1 working time
unsigned long gate2 = 3000; // gate 2 working time
unsigned long gate1to2 = 2000; // tmr - the time between 1st and 2nd gate
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
lcd.init();
lcd.clear();
lcd.backlight();
}
void loop() {
btn1.tick();
btn2.tick();
if (btn1.isClick()) {
Serial.println("BUTTON 1 Clicked");
btn10 = true;
state1 = true;
state2 = true;
tmr1 = millis();
//tmr2 = millis();
tmr = millis();
//open();
}
if (btn1.isHold()) {
Serial.println("BUTTON 1 Hold");
}
if (btn2.isClick()) {
Serial.println("BUTTON 2 Clicked");
state2 = true;
tmr2 = millis();
}
if (btn2.isHold()) {
Serial.println("BUTTON 2 Hold");
}
open();
}
void open() {
if (btn10 == true) {
if (state1 == true) {
if(millis() - tmr1 <= gate1) {
digitalWrite(LED1, HIGH);
Serial.println("Led 1 ON");
}
else {
digitalWrite(LED1, LOW);
Serial.println("Led 1 OFF");
state1 = false;
}
}
if(millis() - tmr >= gate1to2) {
if (state3 == false) {
state3 = true;
tmr2 = millis();
//Serial.println("state3");
}
if (state2 == true) {
tmr2 = millis();
if(millis() - tmr2 <= gate2) {
digitalWrite(LED2, HIGH);
Serial.println("Led 2 ON");
}
else {
digitalWrite(LED2, LOW);
Serial.println("Led 2 OFF");
state2 = false;
//btn10 = false;
}
}
}
}
else {
Serial.println(btn10);
btn10 = false;
}
}
/*
void open1() {
if (state1 == true) {
if(millis() - tmr1 <= gate1) {
digitalWrite(LED1, HIGH);
Serial.println("Led ON");
}
else {
digitalWrite(LED1, LOW);
Serial.println("Led OFF");
state1 = false;
}
}
}
void open2() {
if (state2 == true) {
if(millis() - tmr2 <= gate2) {
digitalWrite(LED2, HIGH);
Serial.println("Led ON");
}
else {
digitalWrite(LED2, LOW);
Serial.println("Led OFF");
state2 = false;
}
}
}
*/
/*
void open1() {
if(tmr1 == millis()) {
digitalWrite(LED3, HIGH);
Serial.println("Led HIGH");
}
if (state1 && millis() - tmr1 >= 3000) {
digitalWrite(LED3, LOW);
// Serial.println("Led LOW");
state1 = 0;
}
}
*/
/*
void led1() {
if (millis() - tmr1 >= prd1) {
tmr1 = millis();
flag1 = !flag1;
digitalWrite(LED1, flag1);
}
}
void led2() {
if (millis() - tmr2 >= prd2) {
tmr2 = millis();
flag2 = !flag2;
digitalWrite(LED2, flag2);
}
}
*/