#include <OneWire.h>
#include <DallasTemperature.h>
// Pin a cui è collegato il sensore DS18B20
#define ONE_WIRE_BUS 11
// Configurazione della libreria OneWire
OneWire oneWire(ONE_WIRE_BUS);
// Passare la nostra istanza oneWire a Dallas Temperature
DallasTemperature sensors(&oneWire);
const int bufferSize = 10;
float tempBuffer[bufferSize];
int index = 0;
float totalTemperature = 0;
void setup() {
Serial.begin(9600);
sensors.begin();
// Inizializza il buffer con valori a 0
for (int i = 0; i < bufferSize; i++) {
tempBuffer[i] = 0;
}
}
void loop() {
sensors.requestTemperatures(); // Invia il comando per ottenere le temperature
float temperature = sensors.getTempCByIndex(0); // Leggi la temperatura in gradi Celsius
// Aggiorna il buffer circolare
totalTemperature -= tempBuffer[index]; // Sottrai il vecchio valore dalla somma totale
tempBuffer[index] = temperature; // Aggiorna il valore nel buffer
totalTemperature += tempBuffer[index]; // Aggiungi il nuovo valore alla somma totale
index = (index + 1) % bufferSize; // Aggiorna l'indice per il prossimo valore
// Calcola la media
float averageTemperature = totalTemperature / bufferSize;
// Stampa la temperatura corrente e la media
Serial.print("Temperatura corrente: ");
Serial.print(temperature);
Serial.print(" °C, Media: ");
Serial.print(averageTemperature);
Serial.println(" °C");
delay(1000); // Attendi un secondo prima della prossima lettura
}