Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <DHT.h>
- #include <DS1307.h>
- //#include <Adafruit_GFX.h>
- //#include <DS1307RTC.h>
- #include <SPI.h>
- #include <SD.h>
- #define DS1307_ADDRESS 0x68
- //Sensor temp. e umidade
- #define DHTPIN 7
- #define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)
- DHT dht(DHTPIN, DHTTYPE);
- byte zero = 0x00;
- //Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino
- DS1307 rtc(A4, A5); // A4 = SDA; A5 = SCL
- const int chipSelect = 4;
- int latchPin = 1; // Conectar ao pino 12 dos 74HC595
- int clockPin = 2; // Conectar ao pino 11 dos 74HC595
- int dataPin = 3; // Conectar ao pino 14 dos 74HC595
- int umidadesolo;
- //------------------------------- setup -----------------------
- void setup() {
- Serial.begin(9600);
- Serial.println("Aguardando dados...");
- // Iniclaiza o sensor DHT
- dht.begin();
- //Aciona o relogio
- rtc.halt(false);
- //As linhas abaixo setam a data e hora do modulo
- //e podem ser comentada apos a primeira utilizacao
- //rtc.setDOW(SUNDAY); //Define o dia da semana
- //rtc.setTime(12, 50, 13); //Define o horario
- //rtc.setDate(26, 7, 2015); //Define o dia, mes e ano
- //Definicoes do pino SQW/Out
- rtc.setSQWRate(SQW_RATE_1);
- rtc.enableSQW(true);
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- }
- // ------------------------------- registrador ---------------------------
- //Registrador 74hc595
- void registrador(byte reg){
- digitalWrite(1, HIGH);
- // shiftOut(3, 2, LSBFIRST, registrador);
- shiftOut(3, 2, LSBFIRST,reg);
- digitalWrite(1, LOW);
- }
- //-------------------------------------- loop ---------------------------
- void loop() {
- //Sensor de umidade e temperatura do ar DHT22
- // Leitura da umidade
- float h = dht.readHumidity();
- // Leitura da temperatura (Celsius)
- float t = dht.readTemperature();
- // Verifica se o sensor esta respondendo
- if (isnan(h) || isnan(t))
- {
- Serial.println("Falha ao ler dados do sensor DHT !!!");
- return;
- }
- // Mostra a temperatura no serial monitor e no display
- Serial.print("Temperatura: ");
- Serial.print(t);
- Serial.print(" *C ");
- // Mostra a umidade no serial monitor e no display
- Serial.print("Umidade : ");
- Serial.print(h);
- Serial.println(" %");
- //------------------------------------------------------------
- //Sensor de umidade do solo
- umidadesolo = analogRead(A0);
- int Porcento = map(umidadesolo, 680, 0, 0, 100);
- Serial.print("Umidade do solo: ");
- Serial.print(Porcento);
- Serial.println("%");
- delay(1000);
- //------------------------------------------------------------
- //-----------------------------------------------------------
- //SD Card
- // make a string for assembling the data to log:
- String dataString = "";
- dataString += String(rtc.getTimeStr());
- // Grava a cada 1 seg
- delay (1000);
- // open the file. note that only one file can be open at a time,
- // so you have to close this one before opening another.
- File dataFile = SD.open("datalog.txt", FILE_WRITE);
- // if the file is available, write to it:
- if (dataFile) {
- dataFile.println(dataString);
- dataFile.close();
- // print to the serial port too:
- Serial.println(dataString);
- }
- // if the file isn't open, pop up an error:
- else {
- Serial.println("error opening datalog.txt");
- }
- //}
- //-----------------------------------------------------------
- //Início automação
- // Iluminação LIGA
- if (rtc.getTimeStr(FORMAT_SHORT)=="5:00"){
- registrador (0b11110000);
- }
- // Iluminação DESLIGA
- if (rtc.getTimeStr(FORMAT_SHORT)=="20:00"){
- registrador (0b00000000);
- }
- // Fertirrigação
- if (rtc.getTimeStr(FORMAT_SHORT)=="9:00"){
- registrador (0b11111000); // Liga Solenéide 1
- delay (5000);
- registrador (0b11111100); // Liga Bomba
- delay (180000);
- registrador (0b11111000); // Desliga Bomba
- delay (5000);
- registrador (0b11110000); // Desliga Soleníde 1
- registrador (0b11110100); // Liga Soleníde 2
- delay (5000);
- registrador (0b11111100); // Liga Bomba
- delay (60000);
- registrador (0b11111000); // Desliga Bomba
- delay (5000);
- registrador (0b11110000); // Desliga Soleníde 2
- }
- //Irrigação
- if ((Porcento <=75) && (rtc.getTimeStr(FORMAT_SHORT) == "21:00")){
- registrador (0b11110100); // Liga Soleníde 2
- delay (5000);
- registrador (0b11111100); // Liga Bomba
- delay (180000);
- registrador (0b11111000); // Desliga Bomba
- delay (5000);
- registrador (0b11110000); // Desliga Soleníde 2
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement