Chocadeira com arduino e DHT11
Enviado: 23/Ago/2018, 20:03
				
				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 completo
			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: 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"));
  */
}