#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);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd1:VSS
lcd1:VDD
lcd1:V0
lcd1:RS
lcd1:RW
lcd1:E
lcd1:D0
lcd1:D1
lcd1:D2
lcd1:D3
lcd1:D4
lcd1:D5
lcd1:D6
lcd1:D7
lcd1:A
lcd1:K
pot1:GND
pot1:SIG
pot1:VCC
pot2:GND
pot2:SIG
pot2:VCC
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
bz1:1
bz1:2
r1:1
r1:2
led21:A
led21:C
led1:A
led1:C