Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- *
- *
- */
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include <DS1307.h>
- //#include <Ethernet.h>
- #include <Thread.h>
- #include <ThreadController.h>
- //#include <EEPROM.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- // Inicia o DS1307
- DS1307 rtc(SDA, SCL);
- String HoraAtual;
- String DataAtual;
- String DiaSemana;
- // Inicia o LCD
- LiquidCrystal_I2C lcd(0x3F, 2 ,1 ,0 ,4 ,5 ,6 ,7 ,3, POSITIVE);
- // Portas de entrada e saida.
- int porta1 = 8; //led Branco
- int porta2 = 9; //led Azul
- int porta3 = 50; //rele 1 N1
- int porta4 = 51; //rele 1 N2
- int porta5 = 52; //rele 2 N1
- int porta6 = 53; //rele 2 N2
- //Sensor de temperatura
- // Porta do pino de sinal do DS18B20
- #define ONE_WIRE_BUS 2
- // Define uma instancia do oneWire para comunicacao com o sensor
- OneWire oneWire(ONE_WIRE_BUS);
- // Armazena temperaturas minima e maxima
- float tempMin = 999;
- float tempMax = 0;
- DallasTemperature sensors(&oneWire);
- DeviceAddress sensor1;
- // Coleta o estado das portas
- int S1;
- int S2;
- int S3;
- int S4;
- int S5;
- int S6;
- //hora inicio e termino do agendamento
- String schedule1 = "22:55:00";
- String endSchedule1 = "23:00:00";
- String schedule2 = "22:56:00";
- String endSchedule2 = "23:01:00";
- String schedule3 = "22:57:00";
- String endSchedule3 = "23:02:00";
- String schedule4 = "22:58:00";
- String endSchedule4 = "23:03:00";
- String schedule5 = "22:59:00";
- String endSchedule5 = "23:04:00";
- String schedule6 = "23:00:00";
- String endSchedule6 = "23:05:00";
- void setup(){
- Serial.begin(9600);
- // Seta o LCD para 16x2 caracteres
- lcd.begin(16, 2);
- // Inicializa o objeto RTC
- rtc.begin();
- // Seta o relogio para run-mode
- rtc.halt(false);
- // A linha abaixo pode ser comentada para usar os valores já armazenados no DS1307
- //setdatahora();
- // Define SQW/Out rate para 1Hz e habilite SQW
- rtc.setSQWRate(SQW_RATE_1);
- rtc.enableSQW(true);
- pinMode(porta1, OUTPUT);
- pinMode(porta2, OUTPUT);
- pinMode(porta3, OUTPUT);
- pinMode(porta4, OUTPUT);
- pinMode(porta5, OUTPUT);
- pinMode(porta6, OUTPUT);
- //verifica as portas e desliga
- S1 = digitalRead(porta1);
- if (S1 == 0){
- digitalWrite(porta1, HIGH);
- }
- S2 = digitalRead(porta2);
- if (S2 == 0){
- digitalWrite(porta2, HIGH);
- }
- S3 = digitalRead(porta3);
- if (S3 == 0){
- digitalWrite(porta3, HIGH);
- }
- S4 = digitalRead(porta4);
- if (S4 == 0){
- digitalWrite(porta4, HIGH);
- }
- S5 = digitalRead(porta5);
- if (S5 == 0){
- digitalWrite(porta5, HIGH);
- }
- S6 = digitalRead(porta6);
- if (S6 == 0){
- digitalWrite(porta6, HIGH);
- }
- //Sensor de Temperatura
- sensors.begin();
- (!sensors.getAddress(sensor1, 0));
- }
- void loop(){
- // Display time centered on the upper line
- lcd.setCursor(0, 0);
- lcd.print(rtc.getTimeStr());
- // Display abbreviated Day-of-Week in the lower left corner
- lcd.setCursor(0, 1);
- lcd.print(rtc.getDOWStr(FORMAT_SHORT));
- // Display date in the lower right corner
- lcd.setCursor(4, 1);
- lcd.print(rtc.getDateStr());
- // Wait one second before repeating :)
- delay (1000);
- datahora();
- schedule();
- sensorTemperatura();
- }
- /**************************
- * Grava Data e Hora
- ***************************/
- void setdatahora(){
- rtc.setDOW(MONDAY); // Seta dia-da-semana
- rtc.setTime(21, 38, 0); // Seta o horario
- rtc.setDate(25, 07, 2017); // Seta a data dia/mes/ano
- }
- /**************************
- * Coleta os dados de data
- * e hora atuais
- ***************************/
- void datahora(){
- HoraAtual = rtc.getTimeStr();
- DataAtual = rtc.getDateStr(FORMAT_SHORT);
- DiaSemana = rtc.getDOWStr(FORMAT_SHORT);
- }
- /**************************
- * Executa o agendamento
- ***************************/
- void schedule(){
- //Schedule 1 - Porta1
- if(HoraAtual >= schedule1 && HoraAtual < endSchedule1){
- digitalWrite(porta1, LOW);
- }
- else{
- digitalWrite(porta1, HIGH);
- }
- //Schedule 2 - Porta2
- if(HoraAtual >= schedule2 && HoraAtual < endSchedule2){
- digitalWrite(porta2, LOW);
- }
- else{
- digitalWrite(porta2, HIGH);
- }
- //Schedule 3 - Porta3
- if(HoraAtual >= schedule3 && HoraAtual < endSchedule3){
- digitalWrite(porta3, LOW);
- }
- else{
- digitalWrite(porta3, HIGH);
- }
- //Schedule 4 - Porta4
- if(HoraAtual >= schedule4 && HoraAtual < endSchedule4){
- digitalWrite(porta4, LOW);
- }
- else{
- digitalWrite(porta4, HIGH);
- }
- //Schedule 5 - Porta5
- if(HoraAtual >= schedule5 && HoraAtual < endSchedule5){
- digitalWrite(porta5, LOW);
- }
- else{
- digitalWrite(porta5, HIGH);
- }
- //Schedule 6 - Porta6
- if(HoraAtual >= schedule6 && HoraAtual < endSchedule6){
- digitalWrite(porta6, LOW);
- }
- else{
- digitalWrite(porta6, HIGH);
- }
- }
- /*******************************************
- sensor de temperatura
- ********************************************/
- void sensorTemperatura(){
- // Le a informacao do sensor
- sensors.requestTemperatures();
- float tempC = sensors.getTempC(sensor1);
- // Mostra dados no LCD
- lcd.clear();
- lcd.setCursor(8,0);
- lcd.print(" ");
- lcd.print(tempC);
- //Simbolo grau
- lcd.write(223);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement