Buongiorno a tutti;
Per scopi didattici come da titolo vorrei creare un termostato con Arduino UNO e cioè fare in modo che se la temperatura scende sotto un certo valore preimpostato si attivi una caldaia (un LED, un relè).
Ho abbozzato aiutandomi con il web questo sketch che in parte sembra funzionare, unico problema sono la visualizzazione dei valori che vengono mostrati sul display non correttamente.
// Carico le librerie
#include <LiquidCrystal.h>
#include "DHT.h"
// Definisco il pin del sensore
#define DHTPIN 2
// Definisco il tipo di sensore
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Definisco a quali pin è connesso il display
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
// Definisco che il pin 13 è quello a cui è connesso il led
const int ledPin = 13;
void setup() {
// Setto il tipo di display (colonne, righe)
lcd.begin(16, 2);
// Scrivo sul display le parole fisse
lcd.print("Tem."); //Temperatura
lcd.setCursor(0,1);
lcd.print("Umi."); //Umidità
lcd.setCursor(10,0);
lcd.print("Cald"); //Caldaia
pinMode(ledPin, OUTPUT);
}
void loop() {
int t = dht.readTemperature();
int h = dht.readHumidity();
// Posiziono il cursore alla colonna 6 e riga 0
lcd.setCursor(6, 0);
lcd.print(t);
// Posiziono il cursore alla colonna 6 e riga 1
lcd.setCursor(6, 1);
lcd.print(h);
// Setto il limite di temperatura minore o uguale a 17 gradi
if (t <= 17) {
//LED acceso
digitalWrite(ledPin, HIGH);
// Posizione il cursore alla colonna 10 e riga 1
lcd.setCursor(10, 1);
lcd.print("Acc"); //Accesa
}
else {
// LED spento:
digitalWrite(ledPin, LOW);
// Posiziono il cursore alla colonna 10 e riga 1
lcd.setCursor(10, 1);
lcd.print("Spe"); //Spenta
}
}
A livello hardware ho collegato tutto correttamente, display, sensore DHT11, breadboard, Arduino UNO eccc...
A livello software il problema adesso sta che sul display sia la temperatura che l'umidita vengono visualizzate con tre cifre del tipo:
Tem. 111 che dopo qualche secondo diventa 011 per poi tornare dopo qualche secondo a 111
Umi. 149 che dopo qualche secondo diventa 049 pe rpoi tornare dopo qualche secondo a 149
Qalcuno potrebbe illuminarmi su come mai di questo errore?
Consigli?!
Grazie a tutti in anticipo.
IMG_20211107_115958|375x500
