/*
Realizzare un sistema che sia in grado di leggere i dati da un sensore di temperatura e umidità digitale e
da un termoresistore, visualizzandoli poi su seriale.
*/
//Includo le librerie necessarie per utilizzare i sensori.
//NB: si possono sempre leggere i sensori "direttamente", senza
//passare dalle librerie, ma non è di certo la scelta più veloce.
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2
#define DHTTYPE DHT22
const float thermistorBetaCoefficient = 3950;
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
Serial.begin(9600);
dht.begin();
sensor_t sensor;
dht.temperature().getSensor(&sensor);
dht.humidity().getSensor(&sensor);
delayMS = sensor.min_delay / 1000;
}
void loop() {
sensors_event_t event;
dht.temperature().getEvent(&event);
Serial.print(F("DHT22 Temperature: "));
Serial.print(event.temperature);
Serial.println(F(" ℃"));
dht.humidity().getEvent(&event);
Serial.print(F("DHT22 Humidity: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
//Dalla documentazione ricavo la formula corretta per la trasformazione
//del segnale analogico in valore di temperatura.
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / thermistorBetaCoefficient + 1.0 / 298.15) - 273.15;
Serial.print("NTC Temperature: ");
Serial.print(celsius);
Serial.println(" ℃");
Serial.println("--------------------------------------------");
delay(2000);
}