Material:
- Arduino Uno
- LCD Display
- Sensor de temperatura DHT11
- push-button
- resistor limitador de corrente
Código:
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 8
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT11 // define o modelo do DHT no nosso caso DHT11
DHT dht(DHTPIN, DHTTYPE);
int escala = 1;
int pino = 6;
void setup() {
lcd.begin(16,2); // habilita display 16x2
dht.begin(); // habilita o DHT
pinMode(pino, INPUT); // declara pino como entrada
}
void loop() {
int h = dht.readHumidity(); // lê a humidade (o DHT tb fornece a humidade mas não usaremos neste projeto)
int t = dht.readTemperature(); //lê a temperatura
int buttonState = digitalRead(pino); // verifica se o pushbutton foi pressionado
switch(buttonState) { // caso tenha sido pressionado altera a escala
case HIGH:
escala=++escala; // ++escala = escala + 1
lcd.clear();
delay(150);
}
delay(100);
switch (escala) { // define celsius para escala = 1 e fahrenheit para escala = 2 kelvin = 3 e escala =4 volta ao inicio
case 1:
celsius(t);
break;
case 2:
fahrenheit(t);
break;
case 3:
kelvin(t);
break;
case 4:
humidade(h);
break;
case 5:
escala = 1; //volta a escala 1
}
}
void celsius(int t) { // função para celsius
if (isnan(t) ) {
lcd.println("Falha na leitura do DHT"); // printa uma falha caso t = NaN (not a number)
} else {
int temp = t; // iguala temperatura t com a varivel temp
lcd.setCursor(0,0); // define a posição do cursor.
lcd.print("Temperatura: ");
lcd.setCursor(7,1);
lcd.print(temp); // printa a leitura da temperatura no display
lcd.setCursor(9,1);
lcd.write(B11011111); // simbolo do grau
lcd.print("C");
}
}
void fahrenheit(int t) { //função para fahrenheit
if (isnan(t)) {
lcd.println("Falha na leitura do DHT");
} else {
int temp = (t * 1.8)+32; // converte celsius para fahrenheit
lcd.setCursor(0,0);
lcd.print("Temperatura: ");
lcd.setCursor(7,1);
lcd.print(temp);
lcd.setCursor(9,1);
lcd.write(B11011111);
lcd.print("F");
}
}
void kelvin(int t) { // função para kelvin
if (isnan(t) ) {
lcd.println("Falha na leitura do DHT"); // printa uma falha caso t = NaN (not a number)
} else {
int temp = t + 273.15; // formula para kelvin
lcd.setCursor(0,0); // define a posição do cursor.
lcd.print("Temperatura: ");
lcd.setCursor(7,1);
lcd.print(temp); // printa a leitura da temperatura no display
lcd.setCursor(9,1);
lcd.write(B11011111); // simbolo do grau
lcd.print("K");
}
}
void humidade(int h) { // função para humidade
if (isnan(h) ) {
lcd.println("Falha na leitura do DHT"); // printa uma falha caso t = NaN (not a number)
} else {
lcd.setCursor(0,0); // define a posição do cursor.
lcd.print("Humidade: ");
lcd.setCursor(7,1);
lcd.print(h); // printa a leitura da humidade no display
lcd.setCursor(9,1);
lcd.print("%");
}
}