tengo una duda , sobre como saber cuando un sensor dht22 esta en funcionamiento, se que si este no funciona en la impresion serial muestra el error pero quiero que en lugar de imprimir el error , compruebe que si este funciona y si no pase al siguiente sensor( otro dht22 pero en otro pin)
tenia una idea de como hacerlo pero al tratar de implementarlo no tengo idea como :o alguien me puede ayudar ? ps: es una estación meteorológica simple, solo presion ,humedad y temperatura están separados en modulo porque si deja de funcionar uno, asi solo cae un servicio.
DHT temp1(3,DHT22);//pin 3 para sensor primer de temperatura dht22
DHT temp2(4,DHT22);//pin 4 para sensor segundo de temperatura dht22
DHT hume(2,DHT11);//pin 2 para sensor de humedad dht11
void setup() {
Serial.begin(9600);//Se inicia la comunicación serial
//temp.begin(); //Se inicia el sensor de temperatura
hume.begin(); //Se inicia el sensor de humedad
pressure.begin(); //se inicia el sensor de presion
if (temp1.begin()==true)
{
temp1.begin()
}
else
{
temp2.begin()
}
}
No entiendo muy bien qué quieres hacer exactamente. Yo inicializaría los 2 sensores y tomaría medida de ambos y sacaría la media (esto además te va a servir para pequeños errores de medida). Antes de realizar la media comprobar que la medida no es el error que dices que da si no esta operando y si uno de los dos da error sacar solo la temperatura medida por el otro.
Si lo quieres hacer un poco más "inteligente" puedes ir guardando en un vector los datos de cada sensor (las ultima x mediciones) y si de repente un dato varía solo en uno de los sensores y tiene una desviación muy grande respecto a los valores que estaba dando anteriormente el sensor puedes suponer que ha habido algún tipo de error, si ya te varían los dos en la misma medida entonces no porque es algo que ha hecho subir o bajar drásticamente la temperatura, las coincidencias no existen, ya lo decía grison.
perdon por no poner el codigo completo , aqui lo tengo ya con algunas ediciones, lo que me refiero es que si se deconecta un dispositivo de temperatura , en este caso el que solo uso como sensor de temperatura son los dht 22, el dht11 es para humedad y el bmp180 solo para presion(aunque este mismo saca temperatura).aqui no se si se hagan la idea de como va el proyecto
#include <DHT.h>//cargamos la librería DHT
#include <DHT_U.h>
#include <SFE_BMP180.h>
#include <Wire.h>
SFE_BMP180 pressure;
DHT temp1(3,DHT22);//pin 3 para sensor primer de temperatura dht22
DHT temp2(4,DHT22);//pin 4 para sensor segundo de temperatura dht22
DHT hume(2,DHT11);//pin 2 para sensor de humedad dht11
void setup() {
Serial.begin(9600);//Se inicia la comunicación serial
temp2.begin(); //Se inicia el sensor de temperatura 2
temp1.begin(); //Se inicia el sensor de temperatura 1
hume.begin(); //Se inicia el sensor de humedad
pressure.begin();//se inicia el sensor de presion
}
void loop() {
bool v=true;
bool f=false;
if(temp1.readTemperature(true)) // si toma una lectura correcta el sensor 1 ejecuta lo siguiente
{
double P;//variable auxiliar para leer presion
float h = hume.readHumidity(); //Se lee la humedad
double t = temp1.readTemperature(); //Se lee la temperatura
//Se imprimen las variables
String humedad ="";
humedad+=h;
String linea=humedad+","+t;
String linea2=","+linea;
///leer presion
// String status;
///status = pressure.startPressure(3); //Inicio lectura de presión
P= pressure.getPressure(P,t); //Obtenemos la presión
//impresion serial de todos los datos
double pre=P;
String presion="";
String pres=presion+pre;
String linea3=pres+linea2;
Serial.println(linea3);
//todo esto se lee en un programa piloto en C# , solo lee lo que se imprime en serial
// se lee en un arreglo en el programa
delay(5000); //Se espera 5 segundos para seguir leyendo //datos
}
else if (temp1.readTemperature(false)) //cambia al sendor 2 si el sensor 1 no da una lectura correcta
{
double P;//variable auxiliar para leer presion
float h = hume.readHumidity(); //Se lee la humedad
double t = temp2.readTemperature(); //Se lee la temperatura
//Se imprimen las variables
String humedad ="";
humedad+=h;
String linea=humedad+","+t;
String linea2=","+linea;
///leer presion
///status = pressure.startPressure(3); //Inicio lectura de presión
P= pressure.getPressure(P,t); //Obtenemos la presión
//impresion serial de todos los datos
double pre=P;
String presion="";
String pres=presion+pre;
String linea3=pres+linea2;
Serial.println(linea3);
//todo esto se lee en un programa piloto en C# , solo lee lo que se imprime en serial
// se lee en un arreglo en el programa
delay(5000); //Se espera 5 segundos para seguir leyendo //datos
}
}