Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <WProgram.h> //é um recurso para referenciar a biblioteca Wiring
- #include <Wire.h> //inclui a biblioteca Wire necessaria para comunicaçao i2c
- #include <DS1307.h> //inclui a biblioteca de comandos do DS1307 utilizada neste programa.
- int rtc[4]; // dados ds1307
- int rele_G = 2; // Pino rele G
- int rele_D = 3; // pino rele D
- int pin_temp = 5; // Pino que simula acionamento do relé_G
- int botao; // botao para acionar rele_G
- int contador_G=0; //armazena quantas vezes rele_G foi para 1
- //int set_contador_G = 16; // Valor para acionar rele_D
- int set_tempo_D ; // Tempo que deve ficar ligada rele_G
- int tempo_atual;// tempo atual
- int tempo_high_D ;
- int leitura_high_G; //armazena valor lido por rele_G
- int leitura_high_D; //armazena valor lido por rele_D
- void setup()
- {
- Serial.begin(9600);
- pinMode(rele_G, OUTPUT); //define o pino 2 como saída
- pinMode(rele_D,OUTPUT); //define o pino 3 como saída
- pinMode(pin_temp,INPUT); // defino o pino 5 como entrada digital
- /*
- Esta sequencia de comandos deve ser escrita apenas uma vez, para
- configurar a hora do Shield RTC 1307. Troque os numeros pela hora atual
- RTC.stop();
- RTC.set(DS1307_SEC,0); //define o segundo
- RTC.set(DS1307_MIN,34); //define o minuto
- RTC.set(DS1307_HR,8); //define a hora
- RTC.set(DS1307_DOW,1); //define o dia da semana
- RTC.set(DS1307_DATE,18); //define o dia
- RTC.set(DS1307_MTH,9); //define o mes
- RTC.set(DS1307_YR,16); //define o ano
- RTC.start();*/
- }
- void loop()
- {
- RTC.get(rtc,true);
- for(int i=0; i<3; i++)
- //{
- //Serial.print (rtc[i]);
- //Serial.print(rtc[i]);
- //Serial.print(" ");
- //}
- tempo_atual = rtc[i] ; // tempo, hora atual
- set_tempo_D = rtc[2] == 00 && rtc[1] == 20 && rtc[0] == 00; // tempo de set 20min
- leitura_high_D = digitalRead(rele_D); // Leitura do pino referente ao relé_D
- leitura_high_G = digitalRead(rele_G); // leitura do pino referente ao rele_G
- botao = digitalRead(pin_temp);
- tempo_high_D = tempo_atual + set_tempo_D;
- if(botao = HIGH)
- {
- digitalWrite(rele_D,HIGH);
- }
- else
- {
- digitalWrite(rele_D, LOW);
- }
- if(leitura_high_G = HIGH) //verifica quando o rele_G vai para 1
- {
- {
- contador_G == contador_G++; //acrescenta mais 1 na contagem
- }
- if(contador_G == 16) //Quando contador atingir 16 vezes (rele_G acionou 16 vezes)
- {
- digitalWrite(rele_G,LOW); // Desliga relé_G
- digitalWrite(rele_D, HIGH); //Liga rele_D
- contador_G =0; // zera contador do relé_G
- }
- if(rele_D == HIGH) // Se o rele_D estiver acionado
- {
- if (tempo_high_D = true) // Se a soma do tempo atual mais o tempo set for verdadeiro
- {
- digitalWrite( rele_D, LOW); // Desaciona o rele_D
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement