Il s’agit d’un tutoriel expliquant comment faire l’enregistrement avec le capteur d’humidité température DHT22 effectuée par notre client Steve Spence.
C’est un peu délicat, car le capteur génère des flotteurs et nous envoyer des chaînes à la carte SD, j’ai mis en place un flotteur à la fonction de chaîne pour aider à cela.
Ici est le croquis pour la fonctionnalité d’enregistrement. Il lit la DHT22, convertit les flotteurs en chaînes et écrit les données de délimité par des virgules dans la carte SD La vidéo est ci-dessous !
#include
#include « DHT.h »
#define DHTPIN 7 / / quelle broche nous sommes reliés à #define DHTTYPE DHT22 / / dht DHT DHT 22 (AM2302) (DHTPIN, DHTTYPE) ;
#include #include
const int chipSelect = 10 ;
void setup() {/ / ouvrir la communication série et attendez de port à ouvrir : Serial.begin(9600) ; while (! Série) {; / / attente pour port série pour se connecter. Besoin pour Leonardo seulement}
Serial.Print ("carte SD Initializing...") ; Assurez-vous que l’accès select de puce par défaut est défini sur / / sortie, même si vous ne l’utilisez pas : pinMode (sortie 10,) ;
voir si la carte est présente et peut être initialisée : if (! SD.begin(chipSelect)) {Serial.println ("carte a échoué ou n’existe pas"); / / ne font rien de plus : return;} Serial.println ("carte initialisée.") ; Serial.println (« DHTxx test!") ; DHT.Begin() ; }
void loop() {/ / attendre quelques secondes entre les mesures. delay(2000) ;
Lecture de température ou humidité prend environ 250 millisecondes ! Lectures du capteur peuvent être aussi jusqu'à 2 secondes « ancienne » (c’est un capteur très lent) flotter h = dht.readHumidity() ; Lire la température en Celsius flotter t = dht.readTemperature() ; Lire la température en Fahrenheit flotteur f = dht.readTemperature(true) ; Vérifier si des lectures a échoué et arrêter prématurément (pour réessayer). Si (isnan(h) || isnan(t) || isnan(f)) {Serial.println ("Impossible de lire du capteur DHT!"); return;}
Calculer l’indice de chaleur / / doit envoyer en température en degrés Fahrenheit ! Salut flotteur = dht.computeHeatIndex (f, h) ;
Serial.Print ("humidité:") ; Serial.Print(h) ; Serial.Print ("\t %") ; Serial.Print ("température:") ; Serial.Print(f) ; Serial.println ("* F\t") ;
faire une chaîne pour assembler les données pour vous connecter : dataString String = "" ;
tampon de char [10] ; String stringH = dtostrf(h,6,2,buffer) ; dataString = stringH ; dataString += «, » ; String stringF = dtostrf(f,6,2,buffer) ; dataString += stringF ;
Ouvrez le fichier. Notez qu’un seul fichier peut être ouvert à la fois, / / donc il faut fermer celui-ci avant d’ouvrir une autre. Fichier dataFile = SD.open ("datalog.txt", FILE_WRITE) ;
Si le fichier est disponible, écrivez lui : si (dataFile) {dataFile.println(dataString) ; dataFile.close(); / / trop d’impression vers le port série : Serial.println(dataString);} / / si le fichier n’est pas ouvert, pop-up une erreur : else {Serial.println ("erreur d’ouverture de datalog.txt");}}