Desde ya muchas gracias
Les comento hace varios días vengo trabajando y quiero lograr un control de temperatura osea cuando hace mucho calor que active automáticamente un rele que mueve un extrator de aire, cosa que lo logre hasta ahora y todo eso se ve en el diplay.. Pero se me complico al momento de poder setear a través de un pulsador para manejar la temperatura umbral de activación osea que suba y baje y los reles se activen con otra temperatura, no da error de compilacion pero no funciona, que podra ser???
Cabe mensionar que todo funciona menos el la subida y bajada del umbral...
Dejo el codigo...
//////////////////////////////////////////////////Codigo Viejo
int sensor = 9; // PIN donde va conectado el sensor de temperatura y humedad DHT11
int rele = 2; // PIN donde va conectado el rele
int ON = LOW; // Variable para activar el rele (HIGH = apagado / LOW = encendido) ?Hago algo mal?
int OFF = HIGH; // Variable para desactivar el rele
//int LEDOK = 6; // LED verde - todo OK // Eliminado para poder conectar el display
//int LEDERR = 7; // LED rojo - ERROR // Eliminado para poder conectar el display
int hmax = 26; // Temperatura maxima a la que se activa el extractor
int tol = 1 ; // Rango de seguridad para evitar que se encienda de manera intermitente el ventilador
int dh = 10 ;
int h1 = 0; //
int h2; //
int estado = OFF;
///////////////////////////////////////////////////Control 2
float tempC=0;
int tempPin=0;//el pin de arduino que obtiene voltajes
const int SetTempUp = 6; // pin 6 de Arduino con boton de incremento de temperatura
const int SetTempDown = 7; // pin 7 de Arduino con boton de decremento de temperatura
int TemButtonCounter = hmax; // contador de veces que se incrementa
// o decrementa el ajuste de temperatura
// valor inicial es de 32 grados
int TempButtonUpState = 0; // estado actual del boton de incremento de temperatura
int TempButtonDownState = 0; // estado actual del boton de decremento de temperatura
int lastTempButtonState = 0; // ultimo estado (si se incremento o decremento la temperatura)
////////////////////////////////////////////////////Control 2
////////////////////////////////////////////////////CODIGO ORIGINAL
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);//Direccion de LCD
#include "DHT.h"
#define DHTPIN 9 //Conectamos el Sensor al pin digital 9
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
lcd.begin(16, 2); // Indicamos medidas de LCD
dht.begin();
///////////////////////////////CODIGO
pinMode(rele, OUTPUT); // Activamos el PIN rele como salida para el rele
pinMode(sensor, OUTPUT); // Activamos el PIN sensor como salida para el sensor
///////////////////////////////////////////////CODIGO
//////////////////////////////////////////////Codigo 2
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(SetTempUp, INPUT);
pinMode(SetTempDown, INPUT);
//////////////////////////////////////////////////Codigo2
}
void loop() {
int h = dht.readHumidity(); // Lee la humedad
int t = dht.readTemperature(); //lee la Temperatura
///////////////////////////////////////////////////
lcd.clear();//Elimina todos los simbolos del LCD
lcd.setCursor(0, 0); //Posiciona la primera letra despues del segmento 5 en linea 1
lcd.print("Humedad Relativa ");
lcd.setCursor(6, 1);
lcd.print(h);//Escribe la humedad
lcd.print(" %");
delay (1500);
///////////////////////////////////////////////////
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Temperatura ");
lcd.setCursor(6, 1);
lcd.print(t);//Escribe la temperatura
lcd.print(" C'");
delay (1500);
///////////////////////////////////////////////////
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Temp Umbral");
lcd.setCursor(6, 1);
lcd.print( hmax );//Escribe la temperatura
lcd.print(" C'");
delay (1500);
////////////////////////////////////////////Codigo
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("BY");
lcd.setCursor(1, 1);
lcd.print("Pedro Audisio");
delay (1500);
/////////////////////////////////////////////Codigo
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h) || h == 0 && t == 0) {
Serial.println("Failed to read from DHT");
// digitalWrite(LEDERR, HIGH); // Eliminado para poder conectar el display
} else {
// digitalWrite(LEDOK, HIGH); // Eliminado para poder conectar el display
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
Serial.print("Estado: ");
Serial.print(estado);
Serial.println(" // ");
delay(2000);
///////////////////////////////////////////////////CODIGO
if (h > hmax) {
estado = ON;
digitalWrite(rele, estado);
}
if (h < hmax - tol) {
estado = OFF;
digitalWrite(rele, estado);
}
//////////////////////////////////////////////CODIGO
//delay (500);
}
///////////////////////////////////////////////////Codigo2
// lectura del boton de incremento de temperatura
TempButtonUpState = digitalRead(SetTempUp);
// comparar TempButtonState con su estado previo
if (TempButtonUpState != lastTempButtonState) {
// si el ultimo estado cambio, incrementar el contador
if (TempButtonUpState == HIGH)
{
TemButtonCounter++;
}
}
// guardar el estado actual como ultimo estado,
// para la proxima vez que se ejecute el lazo
lastTempButtonState = TempButtonUpState;
// lectura del boton de decremento de temperatura
TempButtonDownState = digitalRead(SetTempDown);
// compara el estado del boton (incremento o decremento) con el ultimo estado
if (SetTempDown != lastTempButtonState) {
// si el ultimo estado cambio, decrementar el contador
if (SetTempDown == HIGH)
{
TemButtonCounter--;
}
}
// guardar el estado actual como ultimo estado,
// para la proxima vez que se ejecute el lazo
lastTempButtonState = SetTempDown;
Serial.println(TemButtonCounter);
tempC=(5*analogRead(tempPin)*100.0)/1024.0;
// lcd.setCursor(5,1);
// lcd.print(tempC);
// delay(1000);
if(tempC < TemButtonCounter)
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
}
//////////////////////////////////////////////////////CODIGO2
Muchas GRACIAS