Hello guys, I'm new here at forum, and I'm also new to Arduino, I'm developing a project for college, but it doesn't perform all the functions I wrote, I copied many projects here at forum , and I made a join, I don't know if I got it wrong junction or where I went wrong, if anyone can help me.
my project is as follows: a temperature and humidity controller, takes the reading from the DTH11 sensor, and shows the values on the serial monitor and on an LCD, so far perfect, but then I have to control these values, if temp, high turn on the fan , if low humidity turns on a humidifier, then it gets stuck, the arduino can only see the first line, the rest is as if it doesn’t exist, if anyone can help me I appreciate it.
follow the code:
// Incluindo Bibliotecas
#include <SPI.h>
#include <SD.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN A0
#define DHTTYPE DHT11
LiquidCrystal LCD(7, 6, 5, 4, 3, 2); // Inicializa a biblioteca LCD
DHT dht(DHTPIN, DHTTYPE); //Declarando o pino a ser usado do sensor e o tipo
int ValorPir;
bool EstadoControlGeral = 0;
int max_Temp = 25, min_Temp = 10; //Definindo o maximo e o minimo da temperatura
int max_Umid = 70, min_Umid = 20; //Definindo o maximo e o minimo da umidade
int Vent1 = 13; //Definindo o pino 13 a ser usado no arduino para o ventilador
int Umid1 = 12; //Definindo o pino 12 a ser usado no arduino para o umidificador
int ControlGeral = 11; //Definindo o pino 11 como controle do rele geral
int PinSensorPir = A1; //Definindo o pino A1 como entrada analogica do sensor de presenca
void setup()
{
pinMode(Vent1, OUTPUT); //Declarando que o pino da varialvel Vent1 será de saida
pinMode(Umid1, OUTPUT); //Declarando que o pino da varialvel Umid1 será de saida
pinMode(ControlGeral, OUTPUT); //Declarando que o pino da varialvel ControlGeral será de saida
pinMode(PinSensorPir, INPUT); //Declarando que o pino da varialvel PinSensorPir será de entrada
Serial.begin(9600); // inicializa porta serial
dht.begin(); // inicializar o sensor
LCD.begin(16, 2); // inicializa lcd e define a quantidade de colunas e linhas do LCD
LCD.print("Temperatura: C"); // Imprime a mensagem no LCD
LCD.setCursor(0, 1); // Muda o cursor para a primeira coluna e segunda linha do LCD
LCD.print(" Umidade : %"); // Imprime a mensagem no LCD
}
void loop()
{
controlGer1(); // controle do timer dos controladores de umidade e temperatura
// ler umidade
int umid = dht.readHumidity();
// ler a temperatura como graus Celsius
int tempC = dht.readTemperature();
// verifique se alguma leitura falhou
if (isnan(umid) || isnan(tempC))
{
Serial.println("Falha ao fazer a leitura do sensor DHT!");
} else
{
Serial.print("Umidade: "); // Imprime na tela Umidade do ar
Serial.print(umid);
Serial.print(" %");
Serial.print(" | ");
Serial.print("Temperatura: "); // Imprime na tela Temperatura do ambiente
Serial.print(tempC);
Serial.println(" *C");
LCD.setCursor(12, 0); // Muda o cursor para a primeira coluna e segunda linha do LCD
LCD.print(tempC); // Imprime a temperatura em Graus Celsius
LCD.setCursor(12, 1); // Muda o cursor para a decima coluna e segunda linha do LCD
LCD.print(umid); // Imprime a umidade relativa do ar
}
//Iniciando a função de acionamentos dos controladores
if ((tempC <= max_Temp && tempC >= min_Temp) || (umid <= max_Umid && umid >= min_Umid))
//Temperatura e Umidade normal
{
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
delay(500);
}
else if ((tempC >= max_Temp && tempC >= min_Temp) || (umid >= max_Umid && umid >= min_Umid))
//Temperatura acima do setup, Umidade Acima do setup
{
digitalWrite (Vent1, HIGH); //Ventilador ambiente ligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
delay(500);
}
else if ((tempC <= max_Temp && tempC >= min_Temp) || (umid >= max_Umid && umid >= min_Umid))
//Temperatura normal, Umidade Acima do setup
{
digitalWrite (Vent1, HIGH); //Ventilador ambiente ligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
delay(500);
}
else if ((tempC <= min_Temp && tempC <= max_Temp) || (umid <= min_Umid && umid <= max_Umid))
//Temperatura abaixo do setup, Umidade abaixo do setup
{
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, HIGH); //Umidificador ambiente ligado
delay(500);
}
else if ((tempC <= max_Temp && tempC >= min_Temp || umid <= max_Umid && umid <= min_Umid))
//Temperatura normal, Umidade abaixo do setup
{
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, HIGH); //Umidificador ambiente ligado
delay(500);
}
else if ((tempC <= max_Temp && tempC <= min_Temp || umid <= max_Umid && umid >= min_Umid))
//Temperatura abaixo do setup, Umidade normal
{
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
delay(500);
}
else if ((tempC >= max_Temp && tempC >= min_Temp || umid <= max_Umid && umid >= min_Umid))
//Temperatura abaixo do setup, Umidade normal
{
digitalWrite (Vent1, HIGH); //Ventilador ambiente desligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
delay(500);
}
}
//INICIALIZA O TIMER DOS CONTROLADORES LIGADOS
void controlGer1()
{
ValorPir = analogRead(A1);
if (ValorPir > 1)
{
digitalWrite(11, HIGH); // Liga rele de controle geral
delay(7000); // Define o tempo que o sistema ira ficar ligado
if (EstadoControlGeral != 1)
{
EstadoControlGeral = 1;
}
} else
{
digitalWrite(11, LOW); // Desliga rele de controle geral
}
}