#include <LiquidCrystal.h>
#include <math.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#define LED 3
#define JOY A0
#define SENS 2
const int center = 512;
bool TURN_ON = false;
void ChangeDelay(int &dTime){
static unsigned long timer;
if((timer + 100) > millis()) return 0;
if(analogRead(JOY) > center && dTime < 10){
dTime++;
}
if(analogRead(JOY) < center && dTime > 2){
dTime--;
}
timer = millis();
}
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
pinMode(JOY, INPUT);
pinMode(SENS, INPUT);
lcd.begin(16, 2);
lcd.print(" Current delay: ");
}
void loop()
{
static int delayTime = 2;
static int oldDelay = 0;
static unsigned long timer = 0;
ChangeDelay(delayTime);
if(delayTime != oldDelay){
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(delayTime);
lcd.print(" seconds");
}
if(digitalRead(SENS) == HIGH && TURN_ON == false){
TURN_ON = true;
}
if(TURN_ON){
digitalWrite(LED, HIGH);
//Serial.print(TURN_ON);
if(millis() - timer > delayTime * 1000){
timer = millis();
digitalWrite(LED, LOW);
TURN_ON = false;
}
}
oldDelay = delayTime;
}