#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int panel = 6;
const int timePot = A5;
const int brightnessPot = A4;
const int buttonPin = 13;
const int ctrlLED = 5;
//variabless
int setBrightness = 50;
int setTime;
int minutes;
int seconds = 0;
bool start;
void setup()
{
start = false;
pinMode(panel, OUTPUT);
pinMode(buttonPin, INPUT);
lcd.begin(16, 2);
lcd.print("TIME: :00");
lcd.setCursor(0, 1);
lcd.print("BRIGHTNESS: %");
}
void loop() {
if(!start)
{
setTime = analogRead(timePot);
setTime = map(setTime, 0, 1023, 1,30);
setBrightness = analogRead(brightnessPot);
setBrightness = map(setBrightness, 0, 1023, 1,100);
minutes = setTime;
if(setTime < 9.1)
{
lcd.setCursor(11, 0);
lcd.print(" ");
lcd.setCursor(12, 0);
lcd.print(setTime);
}
else
{
lcd.setCursor(11, 0);
lcd.print(setTime);
}
if(setBrightness < 9.1)
{
lcd.setCursor(14, 1);
lcd.print(setBrightness);
lcd.setCursor(13, 1);
lcd.print(" ");
}
else if(setBrightness <= 99)
{
lcd.setCursor(13, 1);
lcd.print(setBrightness);
lcd.setCursor(12, 1);
lcd.print(" ");
}
else
{
lcd.setCursor(12, 1);
lcd.print(setBrightness);
}
}
if(!start && digitalRead(buttonPin))
{
start = true;
lcd.setCursor(0, 0);
lcd.print("TIME LEFT : : ");
}
if(start)
{
if(minutes <= 9)
{
lcd.setCursor(12, 0);
lcd.print(minutes);
lcd.setCursor(11, 0);
lcd.print(" ");
}
else
{
lcd.setCursor(11, 0);
lcd.print(minutes);
}
if(seconds == 0)
{
lcd.setCursor(14, 0);
lcd.print("00");
}
else if(seconds > 9)
{
lcd.setCursor(14, 0);
lcd.print(seconds);
}
else
{
lcd.setCursor(14, 0);
lcd.print(seconds);
lcd.setCursor(15, 0);
lcd.print(" ");
}
delay(1000);
if(seconds == 0)
{
seconds = 59;
minutes = minutes - 1;
}
else
{
seconds = seconds - 1;
}
int PWM = map(setBrightness, 0, 100, 0,255);
analogWrite(panel, PWM);
}
if(minutes == 0 && seconds == 0)
{
alarm();
}
if(digitalRead(buttonPin) == HIGH)
{
alarm();
}
int PWM = map(setBrightness, 0, 100, 0,255);
analogWrite(ctrlLED, PWM);
}
void alarm()
{
lcd.setCursor(0, 0);
lcd.print(" EXSPOSURE TIME ");
lcd.setCursor(0, 1);
lcd.print(" OVER ");
setBrightness = 0;
start = false;
tone(2, 999, 250);
lcd.setCursor(0, 0);
delay(500);
lcd.print("TIME: :00");
lcd.setCursor(0, 1);
lcd.print("BRIGHTNESS: %");
seconds = 0;
minutes = 0;
if(minutes <= 9)
{
lcd.setCursor(12, 0);
lcd.print(minutes);
lcd.setCursor(11, 0);
lcd.print(" ");
}
else
{
lcd.setCursor(11, 0);
lcd.print(minutes);
}
if(seconds == 0)
{
lcd.setCursor(14, 0);
lcd.print("00");
}
else if(seconds > 9)
{
lcd.setCursor(14, 0);
lcd.print(seconds);
}
else
{
lcd.setCursor(14, 0);
lcd.print(seconds);
lcd.setCursor(15, 0);
lcd.print(" ");
}
delay(1000);
}