Atualização 2.0 da tampa do aquário

A parte da luminária está ok, preciso que o código do cooler resfriador faça a leitura dentro de um período de tempo, ou faça uma média de temperaturas se for maior ou igual a 28º, ou a temperatura que eu definir, irá acionar o cooler, isso é necessário, pois o sensor de temperatura ficou muito sensível, e o cooler fica ligando e desligando sem necessidade.

#include <Thermistor.h> //INCLUSÃO DA BIBLIOTECA
#define pinBotao 2
#define pinLED 3
#define cooler 5
boolean estadoBotao = false;
Thermistor temp(5); //VARIÁVEL DO TIPO THERMISTOR, INDICANDO O PINO ANALÓGICO (A5) EM QUE O TERMISTOR ESTÁ CONECTADO
unsigned long delay1 = 0;
unsigned long tempo = 14400000; //Tempo ligado = 4h
//-----------------------------------------------------------------
int temperatura = 0;
void setup() {
  pinMode(pinBotao, INPUT_PULLUP);
  pinMode(pinLED, OUTPUT);
  Serial.begin(9600);
}
//-----------------------------------------------------------------
void loop() {
  if (digitalRead(pinBotao) == LOW){           //  Se botao foi pressionado
    while (digitalRead(pinBotao) == LOW) {  // Enquanto botao pressionado
      delay(30);                                // Debouncing
      estadoBotao = !estadoBotao;               // Inverte status do botão
      delay1 = millis();                        // Atualiza delay1
    }
    if (estadoBotao){                           // Se status do botao for true
      digitalWrite( pinLED, HIGH);              // Liga LED
      if ((delay1 + tempo) < millis())          // Fica ligado por tempo mseg
      {
        estadoBotao = false;                    // Depois de tempo mseg status LED false
      }
    }
    else                                        // Se status botao for false
    {
      digitalWrite( pinLED, LOW);               // Desliga LED
    }
  }
//-----------------------------------------------------------------
  int temperature = temp.getTemp(); //VARIÁVEL DO TIPO INTEIRO QUE RECEBE O VALOR DE TEMPERATURA CALCULADO PELA BIBLIOTECA
  Serial.print("Temperatura: "); //IMPRIME O TEXTO NO MONITOR SERIAL
  Serial.print(temperature); //IMPRIME NO MONITOR SERIAL A TEMPERATURA MEDIDA
  Serial.println("*C"); //IMPRIME O TEXTO NO MONITOR SERIAL
  if (temperature  >= 28)
  {
    digitalWrite(cooler, HIGH);
  }
  else
  {
    digitalWrite(cooler, LOW);
  }
}

Try using some hysteresis.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.