Osvaldo Neto / Mbed 2 deprecated Projeto

Dependencies:   DTH TextLCD mbed

Revision:
0:023d17fe2a19
Child:
1:15110efcc7a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Nov 20 19:08:15 2016 +0000
@@ -0,0 +1,132 @@
+// -------------------------------------
+// Projeto Final
+// Microcontroladores 2 - 10/10/2016
+// Sensor de Temperatura e Umidade DTH11
+// -------------------------------------
+// Aline Romanini   145157
+// Marlon Felipe    121207
+// Osvaldo Torezan  147558
+// -------------------------------------
+
+// Inclui a Library do mbed
+#include "mbed.h"
+// Inclui a Library do Sensor de Temperatura e Umidade DHT11
+#include "DHT.h"
+//Inclui a Library do Display LCD
+#include "TextLCD.h"
+
+//Cria uma instância do LCD
+TextLCD lcd(PTE0, PTE1, PTE2, PTE3, PTE4, PTE5);
+
+//Cria uma instância do sensor de Temperatura
+DHT sensor(PTE20, DHT11);
+
+//Botão para aumentar temperatura de ajuste
+DigitalIn btnAumenta(PTC7);
+//Botão para diminuir temperatura de ajuste
+DigitalIn btnDiminui(PTC0);
+//Botão de selecção
+DigitalIn btnEnter(PTC5);
+//Led interno Vermelho
+DigitalOut led(LED1);
+
+//Função que exibe a temperatua no LCD
+void ExibeTemperatura(float temperatura)
+{
+ //Define a posição do LCD na coluna 1 e linha 2, no caso (0,1)
+ lcd.locate(0,1);
+ //Limpa a linha com 16 espaços
+ lcd.printf("                ");
+ //Define a posição do LCD na coluna 1 e linha 2, no caso (0,1)
+ lcd.locate(0,1);
+ //Escreve e temperatua no LCD
+ lcd.printf("%.2f",temperatura);
+ //Escreve a unidade da temperatura no LCD
+ lcd.printf(" oC");
+}
+
+//Função Principal
+int main()
+{
+    //Apaga o LED Vermelho da Placa
+    led = 1;
+    
+    //Define a tempertura inicial de escolha como 25 graus celcius
+    float temperatura = 25;
+    
+    //Escreve o texto abaixo na primeira linha do LCD
+    lcd.locate(0,0);
+    lcd.printf("Set Temp Celcius");
+    
+    //Exibe a temperatura inicial no LCD
+    ExibeTemperatura(temperatura);
+    
+    //Laço infinito para que o usuário determine a temperatura do alarme.
+    //A temperatura será entre o range de temperaturas que o sensor foi construído
+    //ou seja, entre 0 e +50°C
+    while(1)
+    {
+     //Aumenta a temperatura
+     if (btnAumenta == 0)
+     {
+      //Espera 100ms para auemtnar a temperatura
+      wait(0.1);
+      //Caso o usuário tenha mesmo pressionado o botão, e a temperatura seja menor que +50°C, então aumenta 1°C na temperatura e exibe no LCD
+      if (btnAumenta == 0 && temperatura < 50)
+      {
+        temperatura++;
+        ExibeTemperatura(temperatura);
+        }
+     }
+     
+     //Diminui a temperatura
+     if (btnDiminui == 0)
+     {
+      //Espera 100ms para auemtnar a temperatura
+      wait(0.1);
+      //Caso o usuário tenha mesmo pressionado o botão, e a temperatura seja maior que 0°C, então diminui 1°C na temperatura e exibe no LCD
+      if (btnDiminui == 0 && temperatura > 0)
+      {
+        temperatura--;
+        ExibeTemperatura(temperatura);
+        }
+    }   
+     
+     //Caso o usuário tenha pressionado o botão de "Enter", o firmware encerra o "while" e ativa o alarme
+     if (btnEnter == 0)
+        break;
+    }
+    
+    //Limpa o display LCD
+    lcd.cls();
+    //Define o texto na linha 1 e coluna 1, no caso (0,0)
+    lcd.locate(0,0);
+    //Escreve "Alarme Ativado"
+    lcd.printf("Alarm Activate");
+    
+    while(1)
+    {
+     //Chama a função da biblioteca do sensor e requisita a leitura de dados do mesmo
+     sensor.readData();
+     //Chama a função da biblioteca do sensor e requisita a temperatura em graus Celcius
+     float temperaturaS = sensor.ReadTemperature(CELCIUS);
+     //Exibe a temperatura ambiente no display LCD
+     ExibeTemperatura(temperaturaS);
+     
+     //Caso a temperatura ambiente seja maior que a temperatura de alarme
+     if (temperaturaS > temperatura)
+     {
+      // Dispara o alarme com um sinal luminoso no LED Vermelho da Placa
+      while(1)
+      {
+       led = 0;
+       wait(0.1);
+       led = 1;
+       wait(0.1);   
+      }    
+     }
+     
+     //Espera 1 segundo para realizar uma nova leitura do sensor
+     wait(1);
+    }
+}
\ No newline at end of file