Misurazione di temperatura e umidità con Arduino: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Etichetta: Editor wikitesto 2017
Riga 62:
[[File:Schema di montaggio del circuito.jpg|centro|senza_cornice|600x600px|Schema di montaggio effettuato con l'utilizzo di fritzing; il sensore utilizzato nel circuito è diverso da quello nello schema di montaggio, per modificarlo basta sostituirgi un dht11.]]
{| class="wikitable"
|+I componenti utilizzati nel ciruitocircuito sono:
!componente
!quantità
Riga 74:
|sensore DHT11
|1
|-
|cavi di collegamento
|14
|}
Nello schema di montaggio è stato utilizzato un diverso sensore di temperatura, per realizzare il circuito basta sostituirlo con un sensore DHT11 ( nel nostro caso cpn tre pin).
 
== Codice ==
<syntaxhighlight lang="arduino" line="1">
#include <SimpleDHT.h>
 
Line 106 ⟶ 103:
</syntaxhighlight>
 
NelaNella prima parte includiamo e inizializziamo la libreria simpleDHT, che ci permetterà di leggere i dati del nostro sensore di temperatura. Creiamo delle variabili con i pin che andremo a usare.
<syntaxhighlight lang="arduino" line="1" start="23">
void setup() {
 
Line 127 ⟶ 124:
 
 
</syntaxhighlight>Nel setup(la parte di codice che viene eseguita appena si avvia il microcontrollore) andremo a impostare i pin del display come output.<syntaxhighlight lang="arduino" line="1" start="41">
void loop() {
float temp = rilevaTemperatura();
Line 136 ⟶ 133:
</syntaxhighlight>Nella funzione loop(la parte di codice che viene eseguita in modo ciclico dal microcontrollore), andiamo a rilevare la temperatura, con la funzione rivelaTemperatura() e a inserirla in una variabile.
 
In seguito andiamo a prendere questa variabile e la andiamo a stampare.<syntaxhighlight lang="arduino" line="1" start="47">
void stampa(float n) {
// Scompone il numero n nelle sue cifre
int cifre[3] = {};
cifre[0] = n / 10;
cifre[1] = n - cifre[0] * 10;
cifre[2] = (n * 10) - (cifre[0] * 100) - (cifre[1] * 10);
 
for(int i = 0; i < sizeof(cifre); i++) {
int stampa = cifre[i];
// Inizializzazione
digitalWrite(cifra1, HIGH);
digitalWrite(cifra2, HIGH);
digitalWrite(cifra3, HIGH);
digitalWrite(dp, LOW);
// Determina quale cifra stampare
switch(i) {
case 0:
digitalWrite(cifra1, LOW);
digitalWrite(cifra2, HIGH);
digitalWrite(cifra3, HIGH);
digitalWrite(dp, LOW);
delay(ritardo);
break;
case 1:
digitalWrite(cifra1, HIGH);
digitalWrite(cifra2, LOW);
digitalWrite(cifra3, HIGH);
digitalWrite(dp, LOW);
delay(ritardo);
break;
case 2:
digitalWrite(cifra1, HIGH);
digitalWrite(cifra2, HIGH);
digitalWrite(cifra3, LOW);
digitalWrite(dp, HIGH);
Line 168 ⟶ 167:
break;
}
 
// Stampa la singola cifra
switch(stampa) {
case 0:
Line 241 ⟶ 242:
digitalWrite(g, LOW);
break;
case 98:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOWHIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
defaultcase 9:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGHLOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
default:
digitalWrite(cifra3a, HIGHLOW);
digitalWrite(dpb, LOW);
digitalWrite(cifra1c, HIGHLOW);
digitalWrite(cifra2d, HIGHLOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
}
Line 266 ⟶ 276:
La funzione stampa() converte un numero decimale e lo scompone in cifre, che poi saranno inviate singolarmente al display a sette segmenti a quattro cifre.
 
<syntaxhighlight lang="arduino" line="1" start="186">
float rilevaTemperatura() {
byte temperature = 0;
Line 284 ⟶ 294:
== Conclusioni ==
[[File:Immagine del termometro digitale.jpg|miniatura|Foto del circuito]]
In conclusione, la realizzazione di questo circuito permette, grazie al display di poter visualizzare in tempo reale la temperatura in una determinata stanza o in un determinato ambiente, con un'approssimazione al grado centigrado. Il circuito può rivelarsi particolarmente utile appunto negli ambienti chiusi per poter verificare costantemente la temperatura, ad esempio nelle serre.
 
''Il progetto è stato realizzato da Andrea Piergiovanni, Matteo Coccia,Thomas Pennacchini, Daniel Gostoli, e Sasha Fasolo Massoli.''