Go Down

Topic: Help with arduino code on temperature controller (Read 663 times) previous topic - next topic

Denrlei

Good evening guys, I need help with an arduino code. I'm trying to copy, but it does not work. The program is a temperature controller with relay. The problem is to edit the value of the maximum and minimum temperature through buttons to activate and deactivate the relay. Can someone help me?

____________________________________CODE___________________________________________

#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

}

Dzlisboa

Bom dia

Realmente não compila, segue mensagem de erro:

Arduino: 1.8.8 (Windows 7), Placa:"Arduino/Genuino Uno"

In file included from D:\Denilson\Arduino\arduino-1.8.8-windows\arduino-1.8.8 - Portable\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

D:\Denilson\Arduino\arduino-1.8.8-windows\arduino-1.8.8 - Portable\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

compilation terminated.

exit status 1
Erro compilando para a placa Arduino/Genuino Uno

Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"


Quem puder ajudar ...

Dzlisboa

bubulindo

Tens de instalar a biblioteca Adafruit_sensor

Sabes como instalar?
This... is a hobby.

Go Up