Este es un tutorial explicando cómo hacer el registro con el Sensor de humedad de temperatura DHT22 por nuestro cliente Steve Spence.
Esto es un poco complicado, como el sensor salidas flotadores y enviamos cadenas a la tarjeta SD, he puesto juntos un flotador a la función de cadena con esto.
Aquí está el bosquejo de la función de registro. Lee el DHT22, los flotadores se convierte en cadenas y escribe los datos de delimitado por comas a la tarjeta SD Vídeo está por debajo de!
#include
#include "DHT.h"
#define DHTPIN 7 / / Qué pin nos estamos conectados a #define DHTTYPE DHT22 / / dht DHT DHT 22 (AM2302) (DHTPIN, DHTTYPE);
#include #include
const int chipSelect = 10;
void setup() {/ / abrir comunicaciones en serie y esperar a que puertos abrir: Serial.begin(9600); mientras que (! Serie) {; / / espera para que el puerto serie conectar. Necesario sólo para Leonardo}
Serial.Print ("tarjeta INICIALIZACION SD..."); Asegúrese que el pasador seleccione predeterminado chip es / / salida, incluso si no lo usas: pinMode (10, salida);
ver si la tarjeta está presente y puede ser inicializado: if (! SD.begin(chipSelect)) {Serial.println ("tarjeta de fallido, o no presente"); / / no hacer nada más: devolver;} Serial.println ("tarjeta de inicializado."); Serial.println ("DHTxx test!"); DHT.Begin(); }
void loop() {/ / esperar unos segundos entre las mediciones. delay(2000);
Lectura de temperatura o la humedad toma alrededor de 250 milisegundos. Lecturas del sensor también pueden ser de hasta 2 segundos 'old' (es un sensor muy lento) flotador h = dht.readHumidity(); Leer temperatura como Celsius flotador t = dht.readTemperature(); Leer temperatura como Fahrenheit float f = dht.readTemperature(true); Compruebe si cualquier Lee falló y salir temprano (para intentarlo de nuevo). Si (isnan(h) || isnan(t) || isnan(f)) {Serial.println ("error al leer del sensor DHT!"); vuelta;}
Calcular el índice de calor / / debe enviar en temperatura en grados Fahrenheit! Hola flotador = dht.computeHeatIndex (f, h);
Serial.Print ("humedad:"); Serial.Print(h); Serial.Print ("% \t"); Serial.Print ("temperatura:"); Serial.Print(f); Serial.println ("* F\t");
una cadena de montaje de los datos para iniciar sesión: cadena dataString = "";
buffer de Char [10]; String stringH = dtostrf(h,6,2,buffer); dataString = stringH; dataString += ","; String stringF = dtostrf(f,6,2,buffer); dataString += stringF;
Abra el archivo. Tenga en cuenta que sólo un archivo puede ser abierto en un momento, / / así que tienes que cerrar éste antes de abrir otro. Archivo de datos de archivo = SD.open ("datalog.txt", FILE_WRITE);
Si el archivo está disponible, escribir en él: Si (dataFile) {dataFile.println(dataString); dataFile.close(); / / imprimir en el puerto serie también: Serial.println(dataString);} / / si el archivo no está abierto, surge un error: else {Serial.println ("error al abrir datalog.txt");}}