//programma interamente creato e commentato da Alessandro Riva per Arduino
// www.alessandro-riva-elettronica.blogspot.com
int temperaturaMassima = 27;
const int NRLETTURE = 12; // numero letture
const int SensorPin = A0; //variabile lettura sensore
float valori[NRLETTURE]; //array con i valori
int T_campionamento = 80; // tempo campionamento
float sommaGradi; //variabile somma
float mediaGradi; //variabile media
#include <LiquidCrystal.h> // includo la libreria del display lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pin display LCD
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
Serial.begin(9600); //inizializzo la seriale
lcd.print("Creato da:");
lcd.setCursor(0,2);
lcd.print("Alessandro Riva");
delay(3000);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
}
void loop() {
for ( int i = 0; i<=NRLETTURE;i++)
{
int sensorVal = analogRead(SensorPin);
float voltage = (sensorVal /1024.0) * 5.0;
float temperature = (voltage - .5) * 100;
valori[i] = temperature;
delay(T_campionamento);
}
sommaGradi = 0; // devi essere sicuro che il primo valore sia zero, altrimenti poi sballa tutto
for(int i=0; i<NRLETTURE; i++) { //ciclo che somma i valori dell'array
sommaGradi = sommaGradi + valori[i];
}
mediaGradi = sommaGradi / NRLETTURE; //divido la somma dei valori per il loro numero (media)
lcd.clear(); //pulisco lo schermo
Serial.print ("Gradi: "); //scrivo sul display la parola "gradi"
Serial.println(mediaGradi); //scrivo la temperatura sulla seriale
lcd.print("Temperatura:"); //scrivo sul display la parola "temperatura"
lcd.setCursor(0,2); //sposto il cursore sulla seconda linea
lcd.print(mediaGradi); //scrivo la temperatura
lcd.print(" Gradi"); // scrivo sul display la parola "gradi"
if (mediaGradi >temperaturaMassima)
{
digitalWrite(13,HIGH);
Serial.println("Temperatura raggiunta!!!!");
}
else {
digitalWrite(13,LOW);
}
delay(500);
}