Bom dia pessoal, estou precisando de ajuda com um código de arduino. Estou tentando copilar, mas não dá certo. O programa é um controlador de temperatura com relé. O problema é editar o valor da temperatura máxima e mínima através de botões para ativar e desativar o relé. Alguém pode me ajudar?
#include <DHT.h> //Inclui a bilbioteca DHT
#include <LiquidCrystal.h> //Inclui a biblioteca LiquidCrystal
#define DHTPIN 12 //Define o pino do DHT no Arduino
#define DHTTYPE DHT11 //Define modelo do DHT
#define pino_rele 13 //Define o pino de ativação da relé
#define pino_aumenta_max 8 //Define o pino de entrada para aumentar a temperatura máxima
#define pino_diminui_max 9 //Define o pino de entrada para diminuir a temperatura máxima
#define pino_aumenta_min 10 //Define o pino de entrada para aumentar a temperatura mínima
#define pino_diminui_min 11 //Define o pino de entrada para diminuir a temperatura máxima
int temp_min = 20; //Define temperatura mínima
int temp_max = 22; //Define temperatura máxima
int tm; //Define a variável temperatura como inteira
int hm; //Define a variável humidade como inteira
int aumenta_max, diminui_max; //Lista as variáveis do botão de temperatura máxima
int aumenta_min, diminui_min; //Lista as variáveis do botão de temperatura mínima
LiquidCrystal lcd(1, 3, 4, 5, 6, 7); //Define os pinos do LCD (RS, E, D4, D5, D6, D7)
DHT dht (DHTPIN, DHTTYPE);
byte grau[8] ={ B00001100, //Montagem do simbolo "grau"
B00010010, //Montagem do simbolo "grau"
B00010010, //Montagem do simbolo "grau"
B00001100, //Montagem do simbolo "grau"
B00000000, //Montagem do simbolo "grau"
B00000000, //Montagem do simbolo "grau"
B00000000, //Montagem do simbolo "grau"
B00000000,}; //Montagem do simbolo "grau"
unsigned long previousMillis = 0;
const long interval = 2000; //Intervalo de tempo da medida
void draw()
{
lcd.setCursor(0,0); //Posiciona o cursor no canto superior esquerdo do display
lcd.print("Temp: "); //Mostra o texto "Temp" no LCD
lcd.print(" "); //Adiciona um caractere de espaço
lcd.setCursor(8,0); //Posiciona a informação de temperatura aferida pelo sensor
lcd.print(tm,1); //Inclui a informação de temperatura aferida pelo sensor
lcd.setCursor(11,0); //Posiciona o símbolo de grau formado pelo array
lcd.write((byte)0); //Mostra o símbolo de grau formado pelo array
lcd.print("C"); //Mostra o símbolo da unidade Celsius
lcd.print(" "); //Adiciona um caractere de espaço
lcd.print(temp_max,1); //Inclui a informação de temperatura máxima setada
lcd.setCursor(15,0); //Posiciona a informação da temperatura máxima setada
lcd.setCursor(0,1); //Posiciona o cursor no canto inferior esquerdo do display
lcd.print("Umid : "); //ostra o texto "Umid" no LCD
lcd.print(" "); //Adiciona um caractere de espaço
lcd.setCursor(8,1); //Posiciona a informação de umidade aferida pelo sensor
lcd.print(hm,1); //Inclui a informação de umidade aferida pelo sensor
lcd.setCursor(11,1); //Posiciona o símbolo de porcentagem
lcd.print("%"); //Mostra o símbolo de porcentagem de umidade
lcd.print(" "); //Adiciona um caractere de espaço
lcd.print(temp_min,1); //Inclui a informação de temperatura mínima setada
lcd.setCursor(15,1); //Posiciona a informação da temperatura mínima setada
if (tm >= temp_min && tm <= temp_max) //Condição para acionamento do módulo Relé
{ //Se tm (temp. medida) for maior/igual que temp_min (temp. minima)
digitalWrite(pino_rele, LOW); //O módulo Relé liga
}
else
{ //Se tm (temp. medida) for menor que temp_min (temp. minima)
digitalWrite(pino_rele, HIGH); //O módulo Relé desliga
}
}
void setup(void)
{
Serial.begin(9600); //Iniciliza a porta serial
lcd.begin(16,2); //Inicializa o LCD e especifica sua dimensao
lcd.clear(); //Limpa o LCD
lcd.createChar(0, grau); //Cria o caractere de grau
pinMode(pino_rele, OUTPUT); //Seta o pino como saída
pinMode(pino_aumenta_max, INPUT); //Seta o pino como entrada
pinMode(pino_diminui_max, INPUT); //Seta o pino como entrada
pinMode(pino_aumenta_min, INPUT); //Seta o pino como entrada
pinMode(pino_diminui_min, INPUT); //Seta o pino como entrada
}
void loop(void)
{
unsigned long currentMillis = millis(); //Timer para ler o valor da temperatura
{
tm = dht.readTemperature(); //Leitura do valor de temperatura
hm = dht.readHumidity(); //Leitura do valor de umidade
previousMillis = currentMillis;
}
aumenta_max = digitalRead(pino_aumenta_max); //Lê o pino de entrada para aumentar a temperatura máxima
if (aumenta_max == 1)
{temp_max++;}
while (digitalRead(pino_aumenta_max) == 1)
{delay(10);}
diminui_max = digitalRead(pino_diminui_max); //Lê o pino de entrada para diminuir a temperatura máxima
if (diminui_max == 1)
{temp_max--;}
while (digitalRead(pino_diminui_max) == 1)
{delay(10);}
aumenta_min = digitalRead(pino_aumenta_min); //Lê o pino de entrada para aumentar a temperatura mínima
if (aumenta_min == 1)
{temp_min++;}
while (digitalRead(pino_aumenta_min) == 1)
{delay(10);}
diminui_min = digitalRead(pino_diminui_min); //Lê o pino de entrada para diminuir a temperatura mínima
if (diminui_min == 1)
{temp_min--;}
while (digitalRead(pino_diminui_min) == 1)
{delay(10);}
do
{
draw();
}
while (lcd.display());
delay(50); //Intervalo de leitura do sensor
}