Boa noite queridos amigos, sou novo aqui no forum e faz pouco tempo que estou aprendendo o Arduino, estou tentando fazer um controlador de umidade e temperatura com arduino, as funções iniciais estão ok, meu problema é fazer acionar a portas do arduino, já fiz algumas idéias lidas aqui no forum, mas sem sucesso, estou tentando simular no tinkercad, não sei se é esse o problema mas recorro a ajuda de vcs, desde agradeço.
Na real será utilizado um arduino UNO, um sensor DTH11, um módulo para 4 reles.
Obs: neste código está com if, else e switch, case, só com o if else, não funcionou também, o que eu fiz de errado( isso é trabalho de escola)
/*
* Projeto controle de umidade e temperatura com arduino
*
* Verificar temperatura e umidade do ambiente e mostrar na tela do LCD
*
* ligar um ventilador se por acaso temperatura alta,
* ligar um umidificador se por acaso umidade do ar baixo,
* ligar um sistema de alarme sonoro e visual caso alguns dos eventos acima ocorrer
*
*/
// Biblioteca LCD
#include <LiquidCrystal.h>
LiquidCrystal LCD(7,6,5,4,3,2); // Inicializa a biblioteca LCD
int SensorTempPino = A1; // Define o pino analogico A0 como entrada do Sensor de Temperatura
int max_Temp = 23, min_Temp = 13; //Declarando o maximo e o minimo da temperatura
int max_Umid = 40, min_Umid = 30; //Declarando o maximo e o minimo da umidade
int Vent1 = 13; //Declarando o pino 13 a ser usado no arduino para o ventilador
int Umid1 = 12; //Declarando o pino 12 a ser usado no arduino para o umidificador
int Alarm1 = 10; //Declarando o pino 10 a ser usado no arduino para o alarme alta temp
int Alarm2 = 9; //Declarando o pino 9 a ser usado no arduino para o alarme baixa umidade
int ValorGer1;
void setup()
{
pinMode(Vent1, OUTPUT);
pinMode(Umid1, OUTPUT);
pinMode(Alarm1, OUTPUT);
pinMode(Alarm2, OUTPUT);
LCD.begin(16,2);// Inicia LCD e define a quantidade de colunas e linhas do LCD
LCD.print("Temperatura: C");// Imprime a mensagem de temperatura no LCD
LCD.setCursor(0,1);// Muda o cursor para a primeira coluna e segunda linha do LCD
LCD.print(" Umidade : %");// Imprime a mensagem da umidade no LCD
}
void loop()
{
int ValorGer1 = 0;
// Faz a leitura da tensao no Sensor de Temperatura
int SensorTempTensao = analogRead(SensorTempPino);
// Converte a tensao lida
float Tensao = SensorTempTensao*5;
Tensao /= 1024;
// Converte a tensao lida em Graus Celsius
int tempC = (Tensao-0.5)*100;
// Converte a temperatura em Graus Celsius para Fahrenheit
int umid = (tempC*9/5);
// Muda o cursor para a primeira coluna e segunda linha do LCD
LCD.setCursor(13,0);
// Imprime a temperatura em Graus Celsius
LCD.print(tempC);
// Muda o cursor para a decima coluna e segunda linha do LCD
LCD.setCursor(13,2);
// Imprime a temperatura em Graus Fahrenheit
LCD.print(umid);
//******************************************************************************************************************************
//Iniciando a função de acionamentos dos alarmes e controladores
if ((tempC <= max_Temp && tempC >= min_Temp) || (umid <= max_Umid && umid >= min_Umid))
//Temperatura e Umidade normal
{
int ValorGer1 = 1;
}
//******************************************************************************************************************************
else
if ((tempC >= max_Temp && tempC >= min_Temp) || (umid >= max_Umid && umid >= min_Umid))
//Temperatura acima do setup, Umidade Acima do setup
{
int ValorGer1 = 2;
}
//******************************************************************************************************************************
else
if ((tempC <= max_Temp && tempC >= min_Temp) || (umid >= max_Umid && umid >= min_Umid))
//Temperatura normal, Umidade Acima do setup
{
int ValorGer1 = 3;
}
//******************************************************************************************************************************
else
if ((tempC <= min_Temp && tempC <= max_Temp) || (umid <= min_Umid && umid <= max_Umid))
//Temperatura abaixo do setup, Umidade abaixo do setup
{
digitalRead(ValorGer1 = 4);
}
//******************************************************************************************************************************
else
if ((tempC <= max_Temp && tempC >= min_Temp || umid <= max_Umid && umid <= min_Umid))
//Temperatura normal, Umidade abaixo do setup
{
digitalRead(ValorGer1 = 5);
}
//******************************************************************************************************************************
else
if ((tempC <= max_Temp && tempC <= min_Temp || umid <= max_Umid && umid >= min_Umid))
//Temperatura abaixo do setup, Umidade normal
{
digitalRead(ValorGer1 = 6);
}
//******************************************************************************************************************************
else
if ((tempC >= max_Temp && tempC >= min_Temp || umid <= max_Umid && umid >= min_Umid))
//Temperatura abaixo do setup, Umidade normal
{
digitalRead(ValorGer1 = 7);
}
switch (ValorGer1) {
case '1':
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
digitalWrite (Alarm1, LOW); //Alarme temperatura alta desligado
digitalWrite (Alarm2, LOW); //Alarme umidade baixa desligado
break;
case '2':
digitalWrite (Vent1, HIGH); //Ventilador ambiente ligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
digitalWrite (Alarm1, HIGH); //Alarme temperatura alta ligado
digitalWrite (Alarm2, LOW); //Alarme umidade baixa desligado
break;
case '3':
digitalWrite (Vent1, HIGH); //Ventilador ambiente ligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
digitalWrite (Alarm1, LOW); //Alarme temperatura alta desligado
digitalWrite (Alarm2, LOW); //Alarme umidade baixa desligado
break;
case '4':
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, HIGH); //Umidificador ambiente ligado
digitalWrite (Alarm1, LOW); //Alarme temperatura alta desligado
digitalWrite (Alarm2, HIGH); //Alarme umidade baixa ligado
break;
case '5':
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, HIGH); //Umidificador ambiente ligado
digitalWrite (Alarm1, LOW); //Alarme temperatura alta desligado
digitalWrite (Alarm2, HIGH); //Alarme umidade baixa ligado
break;
case '6':
digitalWrite (Vent1, LOW); //Ventilador ambiente desligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
digitalWrite (Alarm1, LOW); //Alarme temperatura alta desligado
digitalWrite (Alarm2, LOW); //Alarme umidade baixa desligado
break;
case '7':
digitalWrite (Vent1, HIGH); //Ventilador ambiente desligado
digitalWrite (Umid1, LOW); //Umidificador ambiente desligado
digitalWrite (Alarm1, HIGH); //Alarme temperatura alta desligado
digitalWrite (Alarm2, LOW); //Alarme umidade baixa desligado
break;
}
}