Arduino Code For Countdown Timer System

 


CODE



#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // Adjust the pin numbers according to your wiring

#include "Countimer.h" // https://github.com/inflop/Countimer

Countimer tdown;

#include <EEPROM.h>


#define bt_set    A3

#define bt_up     A2

#define bt_down   A1

#define bt_start  A0


int time_s = 0;

int time_m = 0;

int time_h = 0;


int set = 0;

int flag1 = 0, flag2 = 0;


int relay = 7;

int buzzer = 6;


void setup() {

  Serial.begin(9600);


  pinMode(bt_set, INPUT_PULLUP);

  pinMode(bt_up, INPUT_PULLUP);

  pinMode(bt_down, INPUT_PULLUP);

  pinMode(bt_start, INPUT_PULLUP);


  pinMode(relay, OUTPUT);

  pinMode(buzzer, OUTPUT);


  lcd.begin(16, 2);  // Set the number of columns and rows for your LCD

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("   Welcome To   ");

  lcd.setCursor(0, 1);

  lcd.print("Countdown  Timer");

  tdown.setInterval(print_time, 999);

  eeprom_read();

  delay(1000);

  lcd.clear();

}


void print_time() {

  time_s = time_s - 1;

  if (time_s < 0) { time_s = 59; time_m = time_m - 1; }

  if (time_m < 0) { time_m = 59; time_h = time_h - 1; }

}


void tdownComplete() {

  Serial.print("ok");

}


void loop() {

  tdown.run();


  if (digitalRead(bt_set) == 0) {

    if (flag1 == 0 && flag2 == 0) {

      flag1 = 1;

      set = set + 1;

      if (set > 3) { set = 0; }

      delay(100);

    }

  }

  else { flag1 = 0; }


  if (digitalRead(bt_up) == 0) {

    if (set == 0) { tdown.start(); flag2 = 1; }

    if (set == 1) { time_s++; }

    if (set == 2) { time_m++; }

    if (set == 3) { time_h++; }

    if (time_s > 59) { time_s = 0; }

    if (time_m > 59) { time_m = 0; }

    if (time_h > 99) { time_h = 0; }

    if (set > 0) { eeprom_write(); }

    delay(200);

  }


  if (digitalRead(bt_down) == 0) {

    if (set == 0) { tdown.stop(); flag2 = 0; }

    if (set == 1) { time_s--; }

    if (set == 2) { time_m--; }

    if (set == 3) { time_h--; }

    if (time_s < 0) { time_s = 59; }

    if (time_m < 0) { time_m = 59; }

    if (time_h < 0) { time_h = 99; }

    if (set > 0) { eeprom_write(); }

    delay(200);

  }


  if (digitalRead(bt_start) == 0) { flag2 = 1;

    eeprom_read();

    digitalWrite(relay, HIGH);

    tdown.restart();

    tdown.start();

  }


  lcd.setCursor(0, 0);

  if (set == 0) { lcd.print("      Timer     "); }

  if (set == 1) { lcd.print("  Set Timer SS  "); }

  if (set == 2) { lcd.print("  Set Timer MM  "); }

  if (set == 3) { lcd.print("  Set Timer HH  "); }


  lcd.setCursor(4, 1);

  if (time_h <= 9) { lcd.print("0"); }

  lcd.print(time_h);

  lcd.print(":");

  if (time_m <= 9) { lcd.print("0"); }

  lcd.print(time_m);

  lcd.print(":");

  if (time_s <= 9) { lcd.print("0"); }

  lcd.print(time_s);

  lcd.print("   ");


  if (time_s == 0 && time_m == 0 && time_h == 0 && flag2 == 1) {

    flag2 = 0;

    tdown.stop();

    digitalWrite(relay, LOW);

    digitalWrite(buzzer, HIGH);

    delay(300);

    digitalWrite(buzzer, LOW);

    delay(200);

    digitalWrite(buzzer, HIGH);

    delay(300);

    digitalWrite(buzzer, LOW);

    delay(200);

    digitalWrite(buzzer, HIGH);

    delay(300);

    digitalWrite(buzzer, LOW);

  }


  if (flag2 == 1) { digitalWrite(relay, HIGH); }

  else { digitalWrite(relay, LOW); }


  delay(1);

}


void eeprom_write() {

  EEPROM.write(1, time_s);

  EEPROM.write(2, time_m);

  EEPROM.write(3, time_h);

}


void eeprom_read() {

  time_s = EEPROM.read(1);

  time_m = EEPROM.read(2);

  time_h = EEPROM.read(3);

}

Comments

Popular Posts