Este tópico contém resposta, possui 2 vozes e foi atualizado pela última vez por  André Rocha 2 meses .

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #86142

    denrleimachado
    Participante

    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?

    [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

    }[code]

    0
    #86216

    André Rocha
    Moderador

    Olá!

    Qual erro que aparece na compilação?

    0
Visualizando 2 posts - 1 até 2 (de 2 do total)

Você deve fazer login para responder a este tópico.