Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DTH TextLCD mbed
main.cpp@0:023d17fe2a19, 2016-11-20 (annotated)
- Committer:
- OsvaldoTNeto
- Date:
- Sun Nov 20 19:08:15 2016 +0000
- Revision:
- 0:023d17fe2a19
- Child:
- 1:15110efcc7a4
Projeto Final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
OsvaldoTNeto | 0:023d17fe2a19 | 1 | // ------------------------------------- |
OsvaldoTNeto | 0:023d17fe2a19 | 2 | // Projeto Final |
OsvaldoTNeto | 0:023d17fe2a19 | 3 | // Microcontroladores 2 - 10/10/2016 |
OsvaldoTNeto | 0:023d17fe2a19 | 4 | // Sensor de Temperatura e Umidade DTH11 |
OsvaldoTNeto | 0:023d17fe2a19 | 5 | // ------------------------------------- |
OsvaldoTNeto | 0:023d17fe2a19 | 6 | // Aline Romanini 145157 |
OsvaldoTNeto | 0:023d17fe2a19 | 7 | // Marlon Felipe 121207 |
OsvaldoTNeto | 0:023d17fe2a19 | 8 | // Osvaldo Torezan 147558 |
OsvaldoTNeto | 0:023d17fe2a19 | 9 | // ------------------------------------- |
OsvaldoTNeto | 0:023d17fe2a19 | 10 | |
OsvaldoTNeto | 0:023d17fe2a19 | 11 | // Inclui a Library do mbed |
OsvaldoTNeto | 0:023d17fe2a19 | 12 | #include "mbed.h" |
OsvaldoTNeto | 0:023d17fe2a19 | 13 | // Inclui a Library do Sensor de Temperatura e Umidade DHT11 |
OsvaldoTNeto | 0:023d17fe2a19 | 14 | #include "DHT.h" |
OsvaldoTNeto | 0:023d17fe2a19 | 15 | //Inclui a Library do Display LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 16 | #include "TextLCD.h" |
OsvaldoTNeto | 0:023d17fe2a19 | 17 | |
OsvaldoTNeto | 0:023d17fe2a19 | 18 | //Cria uma instância do LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 19 | TextLCD lcd(PTE0, PTE1, PTE2, PTE3, PTE4, PTE5); |
OsvaldoTNeto | 0:023d17fe2a19 | 20 | |
OsvaldoTNeto | 0:023d17fe2a19 | 21 | //Cria uma instância do sensor de Temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 22 | DHT sensor(PTE20, DHT11); |
OsvaldoTNeto | 0:023d17fe2a19 | 23 | |
OsvaldoTNeto | 0:023d17fe2a19 | 24 | //Botão para aumentar temperatura de ajuste |
OsvaldoTNeto | 0:023d17fe2a19 | 25 | DigitalIn btnAumenta(PTC7); |
OsvaldoTNeto | 0:023d17fe2a19 | 26 | //Botão para diminuir temperatura de ajuste |
OsvaldoTNeto | 0:023d17fe2a19 | 27 | DigitalIn btnDiminui(PTC0); |
OsvaldoTNeto | 0:023d17fe2a19 | 28 | //Botão de selecção |
OsvaldoTNeto | 0:023d17fe2a19 | 29 | DigitalIn btnEnter(PTC5); |
OsvaldoTNeto | 0:023d17fe2a19 | 30 | //Led interno Vermelho |
OsvaldoTNeto | 0:023d17fe2a19 | 31 | DigitalOut led(LED1); |
OsvaldoTNeto | 0:023d17fe2a19 | 32 | |
OsvaldoTNeto | 0:023d17fe2a19 | 33 | //Função que exibe a temperatua no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 34 | void ExibeTemperatura(float temperatura) |
OsvaldoTNeto | 0:023d17fe2a19 | 35 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 36 | //Define a posição do LCD na coluna 1 e linha 2, no caso (0,1) |
OsvaldoTNeto | 0:023d17fe2a19 | 37 | lcd.locate(0,1); |
OsvaldoTNeto | 0:023d17fe2a19 | 38 | //Limpa a linha com 16 espaços |
OsvaldoTNeto | 0:023d17fe2a19 | 39 | lcd.printf(" "); |
OsvaldoTNeto | 0:023d17fe2a19 | 40 | //Define a posição do LCD na coluna 1 e linha 2, no caso (0,1) |
OsvaldoTNeto | 0:023d17fe2a19 | 41 | lcd.locate(0,1); |
OsvaldoTNeto | 0:023d17fe2a19 | 42 | //Escreve e temperatua no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 43 | lcd.printf("%.2f",temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 44 | //Escreve a unidade da temperatura no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 45 | lcd.printf(" oC"); |
OsvaldoTNeto | 0:023d17fe2a19 | 46 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 47 | |
OsvaldoTNeto | 0:023d17fe2a19 | 48 | //Função Principal |
OsvaldoTNeto | 0:023d17fe2a19 | 49 | int main() |
OsvaldoTNeto | 0:023d17fe2a19 | 50 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 51 | //Apaga o LED Vermelho da Placa |
OsvaldoTNeto | 0:023d17fe2a19 | 52 | led = 1; |
OsvaldoTNeto | 0:023d17fe2a19 | 53 | |
OsvaldoTNeto | 0:023d17fe2a19 | 54 | //Define a tempertura inicial de escolha como 25 graus celcius |
OsvaldoTNeto | 0:023d17fe2a19 | 55 | float temperatura = 25; |
OsvaldoTNeto | 0:023d17fe2a19 | 56 | |
OsvaldoTNeto | 0:023d17fe2a19 | 57 | //Escreve o texto abaixo na primeira linha do LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 58 | lcd.locate(0,0); |
OsvaldoTNeto | 0:023d17fe2a19 | 59 | lcd.printf("Set Temp Celcius"); |
OsvaldoTNeto | 0:023d17fe2a19 | 60 | |
OsvaldoTNeto | 0:023d17fe2a19 | 61 | //Exibe a temperatura inicial no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 62 | ExibeTemperatura(temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 63 | |
OsvaldoTNeto | 0:023d17fe2a19 | 64 | //Laço infinito para que o usuário determine a temperatura do alarme. |
OsvaldoTNeto | 0:023d17fe2a19 | 65 | //A temperatura será entre o range de temperaturas que o sensor foi construído |
OsvaldoTNeto | 0:023d17fe2a19 | 66 | //ou seja, entre 0 e +50°C |
OsvaldoTNeto | 0:023d17fe2a19 | 67 | while(1) |
OsvaldoTNeto | 0:023d17fe2a19 | 68 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 69 | //Aumenta a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 70 | if (btnAumenta == 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 71 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 72 | //Espera 100ms para auemtnar a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 73 | wait(0.1); |
OsvaldoTNeto | 0:023d17fe2a19 | 74 | //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 |
OsvaldoTNeto | 0:023d17fe2a19 | 75 | if (btnAumenta == 0 && temperatura < 50) |
OsvaldoTNeto | 0:023d17fe2a19 | 76 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 77 | temperatura++; |
OsvaldoTNeto | 0:023d17fe2a19 | 78 | ExibeTemperatura(temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 79 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 80 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 81 | |
OsvaldoTNeto | 0:023d17fe2a19 | 82 | //Diminui a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 83 | if (btnDiminui == 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 84 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 85 | //Espera 100ms para auemtnar a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 86 | wait(0.1); |
OsvaldoTNeto | 0:023d17fe2a19 | 87 | //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 |
OsvaldoTNeto | 0:023d17fe2a19 | 88 | if (btnDiminui == 0 && temperatura > 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 89 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 90 | temperatura--; |
OsvaldoTNeto | 0:023d17fe2a19 | 91 | ExibeTemperatura(temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 92 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 93 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 94 | |
OsvaldoTNeto | 0:023d17fe2a19 | 95 | //Caso o usuário tenha pressionado o botão de "Enter", o firmware encerra o "while" e ativa o alarme |
OsvaldoTNeto | 0:023d17fe2a19 | 96 | if (btnEnter == 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 97 | break; |
OsvaldoTNeto | 0:023d17fe2a19 | 98 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 99 | |
OsvaldoTNeto | 0:023d17fe2a19 | 100 | //Limpa o display LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 101 | lcd.cls(); |
OsvaldoTNeto | 0:023d17fe2a19 | 102 | //Define o texto na linha 1 e coluna 1, no caso (0,0) |
OsvaldoTNeto | 0:023d17fe2a19 | 103 | lcd.locate(0,0); |
OsvaldoTNeto | 0:023d17fe2a19 | 104 | //Escreve "Alarme Ativado" |
OsvaldoTNeto | 0:023d17fe2a19 | 105 | lcd.printf("Alarm Activate"); |
OsvaldoTNeto | 0:023d17fe2a19 | 106 | |
OsvaldoTNeto | 0:023d17fe2a19 | 107 | while(1) |
OsvaldoTNeto | 0:023d17fe2a19 | 108 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 109 | //Chama a função da biblioteca do sensor e requisita a leitura de dados do mesmo |
OsvaldoTNeto | 0:023d17fe2a19 | 110 | sensor.readData(); |
OsvaldoTNeto | 0:023d17fe2a19 | 111 | //Chama a função da biblioteca do sensor e requisita a temperatura em graus Celcius |
OsvaldoTNeto | 0:023d17fe2a19 | 112 | float temperaturaS = sensor.ReadTemperature(CELCIUS); |
OsvaldoTNeto | 0:023d17fe2a19 | 113 | //Exibe a temperatura ambiente no display LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 114 | ExibeTemperatura(temperaturaS); |
OsvaldoTNeto | 0:023d17fe2a19 | 115 | |
OsvaldoTNeto | 0:023d17fe2a19 | 116 | //Caso a temperatura ambiente seja maior que a temperatura de alarme |
OsvaldoTNeto | 0:023d17fe2a19 | 117 | if (temperaturaS > temperatura) |
OsvaldoTNeto | 0:023d17fe2a19 | 118 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 119 | // Dispara o alarme com um sinal luminoso no LED Vermelho da Placa |
OsvaldoTNeto | 0:023d17fe2a19 | 120 | while(1) |
OsvaldoTNeto | 0:023d17fe2a19 | 121 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 122 | led = 0; |
OsvaldoTNeto | 0:023d17fe2a19 | 123 | wait(0.1); |
OsvaldoTNeto | 0:023d17fe2a19 | 124 | led = 1; |
OsvaldoTNeto | 0:023d17fe2a19 | 125 | wait(0.1); |
OsvaldoTNeto | 0:023d17fe2a19 | 126 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 127 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 128 | |
OsvaldoTNeto | 0:023d17fe2a19 | 129 | //Espera 1 segundo para realizar uma nova leitura do sensor |
OsvaldoTNeto | 0:023d17fe2a19 | 130 | wait(1); |
OsvaldoTNeto | 0:023d17fe2a19 | 131 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 132 | } |