Página 1 de 1

Chocadeira com arduino e DHT11

Enviado: 23/Ago/2018, 20:03
por spaycker
pessoal eu dei uma editada ao código do Fernando K do projeto monitor com ATTINY85

estou montando uma chocadeira e aos poucos adicionando novas funções nela.

mas estou com um problema no código, eu quero que ele dê um serialPrint quando ele mudar o status do pinoLed, mas só quando mudar o status.

Ex: temperatura abaixo de "37 C" o led fica aceso indicando funcionamento do Rele acionando minha resistência para aquecer a chocadeira. mas quando a temperatura ultrapassar os "37 C" deve desligar o rele, e escrever na serial que o pinoLed foi apagado, mas só quando mudar o statuse não toda vez que ele fazer a verificação de temperatura, ou seja toda vez que o loop reiniciar.

parte que eu quero editar

Código: Selecionar todos

  //Aqui implementams a lógica de controle
  if (temperature <= ajuste) { //Se a temperatura for maior que o ajuste
    digitalWrite(pinoLed, HIGH); //Ativamos o pino 1 (acende o led)
    if (digitalRead (pinoLed) != HIGH){
    Serial.println("pinoLed aceso");
    }
  }
  else {
    digitalWrite(pinoLed, LOW); //desativamos o pino 1 (desligamos o led)
    if (digitalRead (pinoLed) != LOW){
    Serial.println("pinoLed aceso");
    }
  }
código completo

Código: Selecionar todos

//DHT11
#include <SimpleDHT.h>
int pinDHT11 = 2;
SimpleDHT11 dht11(pinDHT11);


//

//LCD 16x2
#include <LiquidCrystal.h>
//LiquidCrystal lcd(<pino RS>, <pino enable>, <pino D4>, <pino D5>, <pino D6>, <pino D7>)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//

//Constantes que representam os pinos
const int pinoLed = 6;
const int pinoAjuste = A1;
const int pinoDHT = A0;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  
  pinMode(pinoLed, OUTPUT); //ajusta o pino do Led como saída (atuador)
  pinMode(pinoAjuste, INPUT); //ajusta o pino para leitura e ajuste

  digitalWrite(pinoLed, LOW); //Ajusta o pino de saída para baixo
}

void loop() {

  delay(2000); //Aguarda o tempo mínimo entre leituras do DHT

    // read without samples.
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("impossivel fazer a leitura do sensor DHT11, err="); Serial.println(err);delay(1000);
    return;
  }

  //Variável que armazena o valor de ajuste convertido para temperatura
  //int ajuste = (analogRead(pinoAjuste) / 25) + 10;
  int ajuste = 26;

  //Aqui implementams a lógica de controle
  if (temperature <= ajuste) { //Se a temperatura for maior que o ajuste
    digitalWrite(pinoLed, HIGH); //Ativamos o pino 1 (acende o led)
    if (digitalRead (pinoLed) != HIGH){
    Serial.println("pinoLed aceso");
    }
  }
  else {
    digitalWrite(pinoLed, LOW); //desativamos o pino 1 (desligamos o led)
    if (digitalRead (pinoLed) != LOW){
    Serial.println("pinoLed aceso");
    }
  }

  //Exibe um separador
  Serial.println(F("____________________"));
  Serial.println(F("Leitura de dados do Sensor"));
  
  //Exibe a umidade
  Serial.print(F("Umidade: "));
  Serial.print(humidity);
  Serial.println(F(" %"));

  //Exibe a temperatura
  Serial.print(F("Temperatura: "));
  Serial.print(temperature);
  Serial.println(F(" C"));

  //Exibe o valor de ajuste
  Serial.print(F("Ajuste: "));
  Serial.print(ajuste);
  Serial.println(F(" C"));

  //mostra o tempo de operação do monitor
  Serial.print(F("Operando a: "));
  Serial.print(millis() / 1000);
  Serial.println(F(" s"));

  //Exibe um separador
  Serial.println(F("____________________"));
  Serial.println(F(""));
   
/*
//mostra o tempo de opereção do monitor
  oled.print(F("Operando a: "));
  oled.print(millis() / 1000);
  oled.println(F(" s"));

  //Exibe a temperatura
  oled.print(F("Temperatura: "));
  oled.print(temperature);
  oled.println(F(" C"));

  //Exibe a umidade
  oled.print(F("Umidade: "));
  oled.print(humidity);
  oled.println(F(" %"));

  //Exibe um separador
  oled.println(F("____________________"));
  oled.println(F(""));

  //Exibe o valor de ajuste
  oled.print(F("Ajuste: "));
  oled.print(ajuste);
  oled.println(F(" C"));
  */
}

Re: Chocadeira com arduino e DHT11

Enviado: 27/Ago/2018, 21:42
por jose luiz
oi amigo amei sua ideia será interessante esta sua modificação.neste caso voce mudou de display isso mesmo? voce conseguiu realizar o que estava procurando? deu certo o que voce queria? abraço

Re: Chocadeira com arduino e DHT11

Enviado: 03/Set/2018, 20:37
por spaycker
exato mudei de display.

consegui executar mas encontrei algumas coisas a serem mudadas no projeto. porem estou sem os componentes necessários.

algumas alterações a serem consideradas:

1 - configurar um "range" de temperatura, exemplo: acionar o aquecedor quando estiver menos de "36 C" e desligar quando ultrapassar de "39 C", isso evita o acionamento constante do relé ou o que usar para acionar o aquecedor.

2 - ao invés de usar um potenciômetro para ajuste de temperatura, usar 2 botoes. o potenciometro oferece uma certa precisão no ajuste, ma scomo o display mostra o ajuste a cada 1,5 segundos isso dificulta o ajuste, o aperto de botoes como "+ e -" aquedito ser mais facil programar (alem de mais barato)

3 - vou adicionar um comando temporizado para acionar um motor a cada 8 horas por exemplo para virar os ovos.

Re: Chocadeira com arduino e DHT11

Enviado: 05/Set/2019, 19:30
por dudifm
Muito bom o projeto.. Foi realizado?