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"));
*/
}