#define bt_mais 0
#define bt_menos 1
#define bt_modo 2
#define bt_start 3
#define falante 9
#define saida 10
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
short int
hor = 0,
Min = 0,
seg = 0,
key = 0,
mod = 0,
start = 0,
timer = 0,
pisca = 0,
total = 0
;
void disp();
void setup()
{
lcd.begin(16,2);
pinMode(bt_mais, INPUT_PULLUP);
pinMode(bt_menos, INPUT_PULLUP);
pinMode(bt_modo, INPUT_PULLUP);
pinMode(bt_start, INPUT_PULLUP);
pinMode(falante, OUTPUT);
pinMode(saida, OUTPUT);
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("Rafael v1");
lcd.setCursor(1, 1);
lcd.print("Temporizador");
tone(falante, 400, 200);
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ajuste o tempo");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(" : : ");
while (!start){
if(timer++ > 200){
pisca = !pisca;
timer = 0;
}
if(!digitalRead(bt_mais) && !key){
if(mod == 0) if(++seg > 59) seg = 0;
if(mod == 1) if(++Min > 59) Min = 0;
if(mod == 2) if(++hor > 59) hor = 0;
}
if(!digitalRead(bt_menos) && !key){
if(mod == 0) if(--seg < 0) seg = 59;
if(mod == 1) if(--Min < 0) Min = 59;
if(mod == 2) if(--hor < 0) hor = 59;
}
if(!digitalRead(bt_modo) && !key) if(++mod > 2) mod = 0;
if(digitalRead(bt_mais) && digitalRead(bt_menos) && digitalRead(bt_modo))
key = 0; else key = 1;
total = seg + Min * 60 + hor * 3600;
if(!digitalRead(bt_start) && total){
lcd.setCursor(1,0);
lcd.print("Executando...");
start = 1;pisca = 1;
digitalWrite(saida, 1);
}
disp();
}
while(total){
total--;
delay(1000);
hor = ((total / 60) / 60);
Min = (total / 60) % 60;
seg = total % 60;
disp();
}
lcd.clear();
start = 0;
digitalWrite(saida, 0);
lcd.setCursor(2, 0);
lcd.print("finalizado!!!");
for(int bip = 0; bip < 4; bip++){
tone (falante, 400);
delay(500);
lcd.noDisplay();
noTone(falante);
delay(300);
lcd.display();
}
delay(3000);
}
void disp(){
if(pisca){
if (hor < 10)
{
lcd.setCursor(3,1);
lcd.print("0");
lcd.setCursor(4,1);
}
else lcd.setCursor(3,1);
lcd.print(hor);
if (Min < 10)
{
lcd.setCursor(6,1);
lcd.print("0");
lcd.setCursor(7,1);
}
else lcd.setCursor(6,1);
lcd.print(Min);
if (seg < 10)
{
lcd.setCursor(9,1);
lcd.print("0");
lcd.setCursor(10,1);
}
else lcd.setCursor(9,1);
lcd.print(seg);
}else{
lcd.setCursor(3,1);
if(mod == 2) lcd.print(" ");
lcd.setCursor(7,1);
if(mod == 1) lcd.print(" ");
lcd.setCursor(10,1);
if(mod == 0) lcd.print(" ");
}
}