// --- Bibliotecas Auxiliares ---
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
//SoftwareSerial SoftSerial(8, 9); // RX, TX
//==============================================================================
// DEFINIÇÃO DE PINOS
#define led_MOTOR 13 // pino da bomba de agua
#define MOTOR 12 // pino da bomba de agua
#define led_Green 11 // pino do led verde sinaliza bomba ligada
#define led_Red 10 // pino do led vermelho sinaliza bomba desligada
//==============================================================================
//############ Inicializa o display no endereco 0x27 ################################
LiquidCrystal_I2C lcd(0x27, 20,4); // Inicializa o display no endereco 0x27 com MÓDULO I2C
//LiquidCrystal_I2C lcd(0x3F, 16,2); //Inicializa o display no endereco 0x3F com MÓDULO I2C
//LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
//=================================================================================
//######### inicializa Time display em 12:59:45 PM (altere se desejar)#############
int h=6;
int m=59;
int s=55;
int flag=1; //PM
//==================================================================================
// Botões de ajuste de hora e minutos
int button1;
int button2;
// Definição dos botões de ajuste
int hs=0;// pin 0 para Horas (for Hours Setting)
int ms=1;// pin 1 para Minutos (for Minutes Setting)
// Para maior precisão, utilize Arduino Real Time Clock e não apenas delay()
static uint32_t tempo_corrido, now = 0; // Real Timae Control
//Definições para o backlight
int setLight_ini = 60;
int setLight = setLight_ini;
int backlight = 1;
void setup()
{
//####### INICIAR TODOS OS PINOS OFF
digitalWrite( MOTOR , LOW );
digitalWrite( led_Green , LOW );
digitalWrite( led_Red , LOW );
//################ PINOS ENTRADA/SAÍDA ################
pinMode(led_MOTOR , OUTPUT );
pinMode( MOTOR , OUTPUT );
pinMode( led_Green , OUTPUT );
pinMode( led_Red , OUTPUT );
// ===============================================
Serial.begin(9600);
Wire.setSDA(8);
Wire.setSCL(9);
Wire.begin();
lcd.init();
lcd.begin(16,2);
lcd.setBacklight(HIGH);
pinMode(hs,INPUT_PULLUP); // botão 1 (hora)
pinMode(ms,INPUT_PULLUP);// botão 2 (minutos)
now=millis(); // lê hora atual
}
void loop(){
lcd.setBacklight(HIGH);
//######## ACIONAMENTO da BOMBA ########################
if ((h == 7 ) & ( h == 7 & m <= 5)){
gatilho(); //LIGA MOTOR E LED VERDE E DESLIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha 2
lcd.print("MOTOR LIGADO ");
}
else if ((h == 8 ) & ( h == 8 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 9 ) & ( h == 9 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 10 ) & ( h == 10 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 11 ) & ( h == 11 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 12 ) & ( h == 12 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 13 ) & ( h == 13 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 14 ) & ( h == 14 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 15 ) & ( h == 15 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 16 ) & ( h == 16 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 17 ) & ( h == 17 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 18 ) & ( h == 18 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 19 ) & ( h == 19 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 20 ) & ( h == 20 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else if ((h == 21 ) & ( h == 21 & m <= 5 )){
gatilho(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR LIGADO *****");
lcd.setCursor(1,2);// linha
lcd.print("MOTOR LIGADO ");
}
else{gatilho1(); //DESLIGA MOTOR E LED VERDE ELIGA LED VERMELHO
Serial.println("***** MOTOR DESLIGADO *****");
lcd.setCursor(1,2);// linha 2
lcd.print("MOTOR DESLIGADO");
}
//#####################################
// Mostra TIME em horas, minuto e segundo + AM/PM
lcd.setCursor(3,0);
lcd.print("Time ");
if(h<10)lcd.print("0");// sempre 2 dígitos
lcd.print(h);
lcd.print(":");
if(m<10)lcd.print("0");
lcd.print(m);
lcd.print(":");
if(s<10)lcd.print("0");
lcd.print(s);
//if(flag==0) lcd.print(" AM");
//if(flag==1) lcd.print(" PM");
//lcd.setCursor(1,1);// linha 2
//lcd.print("Digital Clock");
//lcd.clear(); // LIMPA DISPLAY
Serial.print(h);
Serial.print(":");
Serial.print(m);
Serial.print(":");
Serial.print(s);
Serial.print("\n");
Serial.println();
for (int i=0;i<5;i++) {
while (now - tempo_corrido < 200) {
now = millis();
}
tempo_corrido = now;
//le botões se estão acionados ou não
button1=digitalRead(hs);// lê botões se estão acionados
button2=digitalRead(ms);
// ajusta hora e minutos
if ((!button1 && backlight == 1) || (!button2 && backlight == 1)) {
setLight = setLight_ini;
setTimer();
}
// acende o backlight
if ((!button1 && backlight == 0) || (!button2 && backlight == 0)) {
lcd.setBacklight(HIGH);
setLight = setLight_ini;
backlight = 1;
}
} // fim do for
bakclight();
//soma segundos
s=s+1;
makeTimer();
} // fim do loop
///*
void setTimer() {
if(!button1){
h=h+1;
makeTimer();
displaySetTimer();
}
if(!button2){
s=0;
m=m+1;
makeTimer();
displaySetTimer();
}
}
void makeTimer() {
// ---- cria segundos, minutos, hora e flag ----
if(s==60){
s=0;
m=m+1;
}
if(m==60)
{
m=0;
h=h+1;
}
if(h>23)
{
h=0;
}
/* Alterado para o modo 24 horas 24:00:00
h=1;
flag=flag+1;
if(flag==2)flag=0;
} */
}
void displaySetTimer() {
// Mostra TIME em horas, minuto e segundo + AM/PM
lcd.setCursor(3,0);
lcd.print("Time ");
if(h<10)lcd.print("0");// sempre 2 dígitos
lcd.print(h);
lcd.print(":");
if(m<10)lcd.print("0");
lcd.print(m);
lcd.print(":");
if(s<10)lcd.print("0");
lcd.print(s);
//if(flag==0) lcd.print(" AM");
//if(flag==1) lcd.print(" PM");
//lcd.setCursor(1,1);// linha 2
//lcd.print("Digital Clock");
}
void bakclight() {
setLight--;
if (setLight == 0) {
lcd.setBacklight(LOW);
backlight = 0;
} //*/
}
//###################### FUNCAO GATILHO LIGA O MOTOR E LED VERDE #################
void gatilho(){
//Serial.begin(115200);
digitalWrite( led_MOTOR , HIGH); // NÃO USAR DELAY (ATRASA O RELOGIO)
delay(1000);
digitalWrite( led_MOTOR , LOW);
delay(1000);
digitalWrite( MOTOR , HIGH);
digitalWrite( led_Green , HIGH);
digitalWrite( led_Red , LOW);
}//######### FIM GATILHO DESLIGA MOTOR E LED VERDE ########
void gatilho1(){
digitalWrite( MOTOR , LOW);
digitalWrite( led_Green , LOW);
digitalWrite( led_Red , HIGH);
// Serial.println("***** END PROG *****");
}//######### FIM GATILHO1 ########
//############################ FIM ##########################################