sexta-feira, 24 de maio de 2013

Sensor de Temperatura DHT

Neste projeto usaremos um sensor de temperatura DTH11 e um display LCD para "printala", usaremos também um push-button para alterar a escada da temperatura. Quando precionado o push-button ela ira alterar a escala entra Fahrenheit, Celsius e Kelvin e também humidade. Você terá de usar DHT library.



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("%");
    }
}


Nenhum comentário:

Postar um comentário