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@1:15110efcc7a4, 2016-11-21 (annotated)
- Committer:
- OsvaldoTNeto
- Date:
- Mon Nov 21 22:32:38 2016 +0000
- Revision:
- 1:15110efcc7a4
- Parent:
- 0:023d17fe2a19
Vers?o Est?vel
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 | 1:15110efcc7a4 | 32 | //Led interno Verde |
OsvaldoTNeto | 1:15110efcc7a4 | 33 | DigitalOut ledV(LED2); |
OsvaldoTNeto | 0:023d17fe2a19 | 34 | |
OsvaldoTNeto | 0:023d17fe2a19 | 35 | //Função que exibe a temperatua no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 36 | void ExibeTemperatura(float temperatura) |
OsvaldoTNeto | 0:023d17fe2a19 | 37 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 38 | //Define a posição do LCD na coluna 1 e linha 2, no caso (0,1) |
OsvaldoTNeto | 0:023d17fe2a19 | 39 | lcd.locate(0,1); |
OsvaldoTNeto | 0:023d17fe2a19 | 40 | //Limpa a linha com 16 espaços |
OsvaldoTNeto | 0:023d17fe2a19 | 41 | lcd.printf(" "); |
OsvaldoTNeto | 0:023d17fe2a19 | 42 | //Define a posição do LCD na coluna 1 e linha 2, no caso (0,1) |
OsvaldoTNeto | 0:023d17fe2a19 | 43 | lcd.locate(0,1); |
OsvaldoTNeto | 0:023d17fe2a19 | 44 | //Escreve e temperatua no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 45 | lcd.printf("%.2f",temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 46 | //Escreve a unidade da temperatura no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 47 | lcd.printf(" oC"); |
OsvaldoTNeto | 0:023d17fe2a19 | 48 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 49 | |
OsvaldoTNeto | 0:023d17fe2a19 | 50 | //Função Principal |
OsvaldoTNeto | 0:023d17fe2a19 | 51 | int main() |
OsvaldoTNeto | 0:023d17fe2a19 | 52 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 53 | //Apaga o LED Vermelho da Placa |
OsvaldoTNeto | 0:023d17fe2a19 | 54 | led = 1; |
OsvaldoTNeto | 1:15110efcc7a4 | 55 | //Acende o LED Verde da Placa |
OsvaldoTNeto | 1:15110efcc7a4 | 56 | ledV = 0; |
OsvaldoTNeto | 0:023d17fe2a19 | 57 | |
OsvaldoTNeto | 0:023d17fe2a19 | 58 | //Define a tempertura inicial de escolha como 25 graus celcius |
OsvaldoTNeto | 0:023d17fe2a19 | 59 | float temperatura = 25; |
OsvaldoTNeto | 0:023d17fe2a19 | 60 | |
OsvaldoTNeto | 0:023d17fe2a19 | 61 | //Escreve o texto abaixo na primeira linha do LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 62 | lcd.locate(0,0); |
OsvaldoTNeto | 1:15110efcc7a4 | 63 | lcd.printf("Set Temp Celsius"); |
OsvaldoTNeto | 0:023d17fe2a19 | 64 | |
OsvaldoTNeto | 0:023d17fe2a19 | 65 | //Exibe a temperatura inicial no LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 66 | ExibeTemperatura(temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 67 | |
OsvaldoTNeto | 0:023d17fe2a19 | 68 | //Laço infinito para que o usuário determine a temperatura do alarme. |
OsvaldoTNeto | 0:023d17fe2a19 | 69 | //A temperatura será entre o range de temperaturas que o sensor foi construído |
OsvaldoTNeto | 0:023d17fe2a19 | 70 | //ou seja, entre 0 e +50°C |
OsvaldoTNeto | 0:023d17fe2a19 | 71 | while(1) |
OsvaldoTNeto | 0:023d17fe2a19 | 72 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 73 | //Aumenta a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 74 | if (btnAumenta == 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 75 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 76 | //Espera 100ms para auemtnar a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 77 | wait(0.1); |
OsvaldoTNeto | 0:023d17fe2a19 | 78 | //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 | 79 | if (btnAumenta == 0 && temperatura < 50) |
OsvaldoTNeto | 0:023d17fe2a19 | 80 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 81 | temperatura++; |
OsvaldoTNeto | 0:023d17fe2a19 | 82 | ExibeTemperatura(temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 83 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 84 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 85 | |
OsvaldoTNeto | 0:023d17fe2a19 | 86 | //Diminui a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 87 | if (btnDiminui == 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 88 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 89 | //Espera 100ms para auemtnar a temperatura |
OsvaldoTNeto | 0:023d17fe2a19 | 90 | wait(0.1); |
OsvaldoTNeto | 0:023d17fe2a19 | 91 | //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 | 92 | if (btnDiminui == 0 && temperatura > 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 93 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 94 | temperatura--; |
OsvaldoTNeto | 0:023d17fe2a19 | 95 | ExibeTemperatura(temperatura); |
OsvaldoTNeto | 0:023d17fe2a19 | 96 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 97 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 98 | |
OsvaldoTNeto | 0:023d17fe2a19 | 99 | //Caso o usuário tenha pressionado o botão de "Enter", o firmware encerra o "while" e ativa o alarme |
OsvaldoTNeto | 0:023d17fe2a19 | 100 | if (btnEnter == 0) |
OsvaldoTNeto | 0:023d17fe2a19 | 101 | break; |
OsvaldoTNeto | 0:023d17fe2a19 | 102 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 103 | |
OsvaldoTNeto | 0:023d17fe2a19 | 104 | //Limpa o display LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 105 | lcd.cls(); |
OsvaldoTNeto | 0:023d17fe2a19 | 106 | //Define o texto na linha 1 e coluna 1, no caso (0,0) |
OsvaldoTNeto | 0:023d17fe2a19 | 107 | lcd.locate(0,0); |
OsvaldoTNeto | 0:023d17fe2a19 | 108 | //Escreve "Alarme Ativado" |
OsvaldoTNeto | 0:023d17fe2a19 | 109 | lcd.printf("Alarm Activate"); |
OsvaldoTNeto | 0:023d17fe2a19 | 110 | |
OsvaldoTNeto | 0:023d17fe2a19 | 111 | while(1) |
OsvaldoTNeto | 0:023d17fe2a19 | 112 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 113 | //Chama a função da biblioteca do sensor e requisita a leitura de dados do mesmo |
OsvaldoTNeto | 0:023d17fe2a19 | 114 | sensor.readData(); |
OsvaldoTNeto | 0:023d17fe2a19 | 115 | //Chama a função da biblioteca do sensor e requisita a temperatura em graus Celcius |
OsvaldoTNeto | 0:023d17fe2a19 | 116 | float temperaturaS = sensor.ReadTemperature(CELCIUS); |
OsvaldoTNeto | 0:023d17fe2a19 | 117 | //Exibe a temperatura ambiente no display LCD |
OsvaldoTNeto | 0:023d17fe2a19 | 118 | ExibeTemperatura(temperaturaS); |
OsvaldoTNeto | 0:023d17fe2a19 | 119 | |
OsvaldoTNeto | 0:023d17fe2a19 | 120 | //Caso a temperatura ambiente seja maior que a temperatura de alarme |
OsvaldoTNeto | 0:023d17fe2a19 | 121 | if (temperaturaS > temperatura) |
OsvaldoTNeto | 0:023d17fe2a19 | 122 | { |
OsvaldoTNeto | 0:023d17fe2a19 | 123 | // Dispara o alarme com um sinal luminoso no LED Vermelho da Placa |
OsvaldoTNeto | 1:15110efcc7a4 | 124 | //Apaga o LED Verde |
OsvaldoTNeto | 1:15110efcc7a4 | 125 | ledV = 1; |
OsvaldoTNeto | 1:15110efcc7a4 | 126 | //Acende o LED Vermelho |
OsvaldoTNeto | 1:15110efcc7a4 | 127 | led = 0; |
OsvaldoTNeto | 1:15110efcc7a4 | 128 | wait(0.1); |
OsvaldoTNeto | 1:15110efcc7a4 | 129 | led = 1; |
OsvaldoTNeto | 1:15110efcc7a4 | 130 | wait(0.1); |
OsvaldoTNeto | 1:15110efcc7a4 | 131 | //} |
OsvaldoTNeto | 0:023d17fe2a19 | 132 | } |
OsvaldoTNeto | 1:15110efcc7a4 | 133 | else |
OsvaldoTNeto | 1:15110efcc7a4 | 134 | ledV = 0; //Acende LED Verde |
OsvaldoTNeto | 0:023d17fe2a19 | 135 | |
OsvaldoTNeto | 0:023d17fe2a19 | 136 | //Espera 1 segundo para realizar uma nova leitura do sensor |
OsvaldoTNeto | 0:023d17fe2a19 | 137 | wait(1); |
OsvaldoTNeto | 0:023d17fe2a19 | 138 | } |
OsvaldoTNeto | 0:023d17fe2a19 | 139 | } |