Olá, sou bem iniciante mas juntei um pgm aqui outro ali e fiz um só porem usando delay que gera um problema que preciso acionar um hidromero apenas 2 vezes por dia  se alguem poder me ajudar segue o codego...

#include <dht11.h>//Biblioteca dht11.
#include <LiquidCrystal.h>//Biblioteca LCD 16X2.
#include <virtuabotixRTC.h>
#define dht_dpin A1 //Pino DATA do Sensor (Pino 2) ligado na porta Analogica A1.
virtuabotixRTC myRTC(A2, A3, A4);
dht11 DHT;
int rele01=8;//Define o pino 8 como pino de sinal para o rele.
int rele02=9;//Define o pino 9 como pino de alarme.
int rele03=10;
int ativaSensor = 12;
int Sensor = A0;
int val;
int ativaSensorState = LOW; //Estado inicial rele04
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);//Pinos do arduino onde estão ligados os pinos do display.
void setup()
{
pinMode(rele02,OUTPUT);
pinMode(rele01,OUTPUT);
pinMode(rele03,OUTPUT);
pinMode(ativaSensor,OUTPUT);
lcd.begin(16, 2);//Inicializando o LCD e informando o tamanho de 16 colunas e 2 linhas.
delay(1000);//Aguarda 1 seg antes de acessar as informações do sensor.
lcd.setCursor(3,0);//Posiciona o cursor do LCD.
lcd.print("Bem-Vindo!");
delay(2000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Grow Monitor");
lcd.setCursor(3,1);
lcd.print("Juca MK3");
delay(6000);
lcd.clear();//Limpa o display.
// myRTC.setDS1302Time(00, 35, 15, 6, 17, 06, 2016); //DATA HORA AJUSTAR DEPOIS COMENTAR
}
void loop()
//////////////////////umidade do ar temperatura//////////////////////////////
{
DHT.read(dht_dpin);
lcd.setCursor(0,0);
lcd.print("UMIDADE");
lcd.setCursor(12,0);
lcd.print(DHT.humidity);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print("TEMPERATURA");
lcd.setCursor(12,1);
lcd.print(DHT.temperature);
lcd.print(" C");
{
if(DHT.temperature<=21)//Se temperatura for maior ou igual a 28 graus, aciona o rele.
digitalWrite(rele01,HIGH);
else
digitalWrite(rele01,LOW);
if(DHT.temperature>=29)//Se temperatura for maior ou igual a 28 graus, aciona o rele.
digitalWrite(rele02,HIGH);
else
digitalWrite(rele02,LOW);
delay(7000);
lcd.clear();//Limpa o display.
//////////////////////////////////hora//////////////////////////////////////////
myRTC.updateTime(); // Le as informacoes do CI
lcd.setCursor(1,0);
lcd.print("Hora : ");
if (myRTC.hours < 10)// Adiciona um 0 caso o valor da hora seja <10
{
lcd.print("0");
}
lcd.print(myRTC.hours);
lcd.print(":");
if (myRTC.minutes < 10)// Adiciona um 0 caso o valor dos minutos seja <10
{
lcd.print("0");
}
lcd.print(myRTC.minutes);
lcd.setCursor(4,1);
lcd.print("6H AS 18H");
{
if ( (myRTC.hours >= 6 & myRTC.minutes >=00) && myRTC.hours <=18) //intervalo de horas para cada relay ser LIGADO.
digitalWrite(rele03, HIGH);
else
digitalWrite(rele03,LOW);
delay(7000);
lcd.clear();//Limpa o display
/////////////////////// sensor de humidade do solo//////////////////////////
val = analogRead(Sensor);
if(val <= 300){
lcd.setCursor(2,0);
lcd.print("Solo Seco");
lcd.setCursor(4,1);
lcd.print(val);
digitalWrite(ativaSensor, HIGH);
delay(3000);
digitalWrite(ativaSensor, LOW);
}
if(val > 300){
lcd.setCursor(2,0);
lcd.print("Solo Umido ");
lcd.setCursor(4,1);
lcd.print(val);
digitalWrite(ativaSensor, LOW);
}
delay(7000);
lcd.clear();//Limpa o display
}}}

Exibições: 534

Responder esta

Respostas a este tópico

oi JJ, boa noite.

Estava analisando seu code e fiquei com umas duvidas.

Você pode postar um esquema das suas ligações.

Facilita o entendimento do code

Rui

Bom, eu fui montando de varios codes 

A0- sinal hidrometro

A1-  sinal do dht11

A2- clk do rtc

A3- dat do rtc

A4- rst do rtc

2- d7 do lcd

3- d6 do lcd

4- d5 do lcd

5- d4 do lcd

6- e do lcd

7- rs do lcd

8- rele

9-rele

10-rele

12-rele

Oi JJ,

qual é o modelo do seu RTC?

DS1307 ou DS3231?

Rui

1302

Oi JJ,

verifiquei seu code e vi que faz o seguinte:

/*
* Le DHT11 umidade
*                temperatura
*   Se temperatura <= 21 C ------------ Liga rele01 caso contrario desliga rele01
*   Se temperatura >= 29 C ------------ Liga rele02 caso contrario desliga rele02
*
*   Mostra horario
*
*   Se hora > 6 e < 18 ------------------- Liga rele03 caso contrario desliga rele03
*
*   Se sensor de umidade < 300 ---- Liga ativaSensor aguarda 3 segundos desliga ativaSensor
*   Se sensor de umidade > 300 ---- Desliga ativaSensor
*/

O que é ativaSensor?

Qual é sua dificuldade.

Rui

cara acho que não estamos conversando a mesma coisa o code funciona bem porem por fato do sensor, esse que vc esta perguntando, oxidar se for usado seguidamente e ele deve ser ativado uma vez por dia talvez eu preciso trocar os delays por millis para continuar cuidando dos outros sensores.

Sr. JJ, bom dia,

pelo seu último comentário, recomendo ao Sr. a leitura do tópico 

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

e expor melhor sua dificuldade, pois o seu titulo e a sua explanação inicial

estão muito pouco elucidativas.

Rui

troque os delay por millis() tem uns delays enormes ali no seu code.

de uma pesquisada de como funciona o millis().

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço