/*Cortina fecha as 18:00;
Cortina abre as 6:00;
Sensores só funcionam entre 6:01 e 17:59;
Se chove fecha cortina;
Se não chove abre a cortina;
temp. ≥ 18 C abre cortina;
temp. < 18 C fecha cortina.
pinMotor1 (vem da ponte H)- Ligado no digital 9;
pinMotor2 (vem da ponte H)- Ligado no digital 10;
pinSensorC (Sensor de fim de curso-parte de cima)-Ligado no digital 7;
pinSensorB (Sensor de fim de curso-parte de baixo)-Ligado no digital 6;
pinSensorD (Sensor de chuva)-Ligado no digital 8;
pinSensorA (Sensor de chuva)-Ligado no Analógico 0 (A0);
O Thermistor(sensor de temperatura) - Ligado no Analógico 1 (A1);
*/
//************************************ Codigo 3 ******************************
/* Fluxograma:
Checa temperatura, chuva analogica fim de cursoCima fim de curos baixo, horario.
*/
#include "Thermistor.h" //https://blogmasterwalkershop.com.br/arquivos/libs/Thermistor.zip
// https://github.com/ItKindaWorks/libraries/tree/master/Thermistor
#include <DS3231.h> //https://github.com/NorthernWidget/DS3231
#define chuvaA A0
#define Motor1 9
#define Motor2 10
#define cimaFC 7
#define baixoFC 6
RTClib myRTC;
DateTime now;
Thermistor termico(1); // Porta analogica 0 ; temp (nome qualquer)
bool toldo = false;
byte hora = 0; // Hora atual
byte minuto = 0; // Minuto atual
int chuva = 0; // Valor de leitura para sensor de chuva
int temperatura = 0; // Define a variavel para temperatira
//------------------------------------------------------------------------------
void setup() {
Serial.begin(115200);
pinMode(Motor1, OUTPUT);
pinMode(Motor2, OUTPUT);
pinMode(cimaFC, INPUT_PULLUP);
pinMode(baixoFC, INPUT_PULLUP);
myTimeSet();
myTimeNow();
}
//-----------------------------------------------------------------------------
void loop() {
temperatura = termico.getTemp(); // Basicamente pega a temperatura , converte a tensão para Graus C°"
chuva = analogRead(chuvaA);
now = myRTC.now();
hora = now.hour();
minuto = now.minute();
// Imprime somente para debug
Serial.print(hora);
Serial.print(":");
Serial.print(minuto);
Serial.print(" chuva ");
Serial.print(chuva);
Serial.print(" Temp ");
Serial.print(temperatura);
if (hora >= 18) { // Fecha toldo
toldo = false; // Fecha toldo
}
if (hora >= 6 and hora < 18) { // Abre toldo
if (chuva < 700 ) toldo = false; // Fecha toldo
if (chuva >= 700 ) {
if (temperatura >= 18) toldo = true; // Abre toldo
if (temperatura < 18) toldo = false; // Fecha toldo
}
}
Serial.print(" toldo "); Serial.println(toldo);
if (toldo == false) { // Fecha toldo
if (digitalRead(cimaFC) == HIGH) { // Motor n fechou
digitalWrite(Motor1, HIGH); // fechando
digitalWrite(Motor2, LOW); // fechando
}
else {
digitalWrite(Motor1, LOW); // parado
digitalWrite(Motor2, LOW); // parado
}
}
if (toldo == true) { // Abre toldo
if (digitalRead(baixoFC) == HIGH) { // Motor n abriu
digitalWrite(Motor1, LOW); // abrindo
digitalWrite(Motor2, HIGH); // abrindo
}
else {
digitalWrite(Motor1, LOW); // parado
digitalWrite(Motor2, LOW); // parado
}
}
delay(500);
}
//-----------------------------------------------------------------------------
void myTimeSet() {
DS3231 myRTC;
myRTC.setClockMode(false); // set to 24h
myRTC.setYear(23);
myRTC.setMonth(12);
myRTC.setDate(01);
myRTC.setHour(17);
myRTC.setMinute(22);
myRTC.setSecond(28);
}
//-----------------------------------------------------------------------------
void myTimeNow() {
now = myRTC.now();
Serial.print(now.year(), DEC); Serial.print('/');
Serial.print(now.month(), DEC); Serial.print('/');
Serial.print(now.day(), DEC); Serial.print(' ');
Serial.print(now.hour(), DEC); Serial.print(':');
Serial.print(now.minute(), DEC); Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
}