Utente:ThaNigro/Arduino/Senosore Temperatura e Umidità
Rilevamento di temperatura e umidità
modificaIl rilevatore di temperatura e luminosità utilizza Arduino Uno per rilevare la temperatura e il livello di umidità di un ambiente, il sensore DHT11.
Tramite un display LCD, verrà visualizzato un menù indipendente per ogni grandezza fisica, agendo su un pulsante che mostrerà un interfaccia differente ogni volta che viene premuto.
Descrizione del progetto
modificaPer la realizzazione di questo progetto occorrono:
- un display LCD 16x2, con integrato I2C;
- due pulsanti, per scegliere quale
- grandezza fisica si vuole visualizzare;
- il sensore di temperatura DHT-11;
- un pulsante (con relativa resistenza di pull-down)
Schema elettrico
modificaSchema di montaggio
modificaCodice
modificail codice per il corretto funzionamento del progetto è quello descritto nel box sottostante:
Qui includo le librerie [SPIEGARE] e definisco le costanti e variabili.
#include <LiquidCrystal.h> //libreria per il funzionamento del display LCD 16x2
//Library for the LCD display 16X2
#include <dht.h> //libreria per il funzionamento del sensore DHT11
//Library for the DHT11 temperature and Humidity sensor
#define DHT11_PIN 7 //Numero del pin a cui è collegato il sensore DHT11
//defining the pin where the DHT11 is connected
dht DHT;
unsigned int menu = 0,menuMax = 1, menuButtonPin = 6; //definizione di variabili per il funzionamento del processo di selezione del menu da visualizzare sul display LCD
//defining variables for the function that selects wich menu to display
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //definizione dei collegamenti del display LCD 16x2
//defining the pins for the connection of the LCD display
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Qui c'è l'inizializzazione del codice
void setup() {
Serial.begin(9600); //Inizializzazione del monitor seriale || initializing serial monitor
pinMode(menuButtonPin, INPUT); //definizione del pin a cui è collegato il pulsante come ingresso || defining the pin for connecting the pushbutton
lcd.begin(16, 2);
}
void loop() {
Serial.print(menuButtonPin); //stampa il valore di ingresso del punsante || displaying the value of the volue recieved from the pushbutton
menuSelection(); //esecuzione della funzione di selezione del menu da visualizzare || executing the function for the menu selection
switch(menu){ //analisi della variabile "menu" || analysing the "menu" variable
case 0: //se "menu" è uguale a 0, viene visualizzato il menu della temperatura || if the value of the "menu" variable eqals to 0, the temperature menu is displayed
lcd.setCursor(0,1);
lcd.print("Menu 1:");
lcd.setCursor(0,2);
lcd.print("Temperatura: ");
lcd.print(DHT.temperature);
break;
case 1: //se "menu" è uguale a 1, viene visualizzato il menu dell'umidità || if the value of the "menu" variable equals to 1 , the Humidity menu is displayed
lcd.setCursor(0,1);
lcd.print("Menu");
lcd.setCursor(0,2);
lcd.print("Umidità: ");
lcd.print(DHT.humidity);
break;
}
}
void menuSelection(){ //definizione della funzione di selezione del menu || defining the menu selection function
digitalRead(menuButtonPin); //lettura del valore di ingresso del pulsante || reading the incoming value from the pushbutton
if(menuButtonPin == HIGH){ //se rilevato un valore di ingresso, aumenta di un unita la variabile "menu" || if recieved a signal, augmets the value of the "menu" variable of 1
menu++;
}
else if(menu > menuMax){ //se il valore della variabile "menu" è maggiore della variabile "menuMax", reimposta il valore di "menu" a 0 || if the value of "menu" is higher than the value of "menuMax" reset the value of the "menu" variable to 0
menu = 0;
}
}
Conclusioni
modificaRicapitolando, questo progetto, tramite l'azione su un pulsante, visualizza su un dispay LCD 16x2, menu differenti per misurare relativamente temperatura e umidità.