Hola a todos, estoy comenzando en el mundo Arduino y, después del uso básico de sensores, quiero aprender cómo ahorrar algo de energía usando el modo sleep.
La cuestión es que tengo un Arduino UNO con un sensor de temperatura DHT22. Tengo un sketch que cada ocho segundos (utilizando la función delay) mide la temperatura y la muestra por el puerto serie. Hasta aquí, todo correcto.
Estoy intentando hacer lo mismo con la librería "LowPower", sustituyendo la instrucción delay(8000) por "LowPower.powerDown( SLEEP_8S , ADC_OFF , BOD_OFF );".
El problema es que al ejecutarlo, en el puerto serie empiezan a aparecer caracteres extraños y no se puede leer la información.
Os pego el código completo para más claridad:
#include <LowPower.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht( DHTPIN , DHTTYPE );
void setup() {
Serial.begin( 9600 );
Serial.println( "Test de uso del sensor DHT22" );
Serial.println( "Midiendo temperatura y humedad" );
Serial.println( "---------------------------------------------" );
dht.begin();
delay( 2000 );
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature( true );
if( isnan(h) || isnan(t) || isnan(f) ){
Serial.println( "Se produjo un fallo en la lectura del sensor DHT!" );
} else {
float hif = dht.computeHeatIndex( f , h );
float hic = (hif - 32) / 1.8;
Serial.print( " T: " );
Serial.print( t );
Serial.print( " ºC\t" );
Serial.print( "RH: " );
Serial.print( h );
Serial.print( " %\t" );
Serial.print( "HI: " );
Serial.print( hic );
Serial.print( " ºC\n" );
LowPower.powerDown( SLEEP_8S , ADC_OFF , BOD_OFF );
}
}
No sé qué problema puede haber. Muchas gracias.