Skip to content

Commit 64d702d

Browse files
committed
Upload dos arquivos DHT11_interface.c e README.txt para armazenamento no repositório GITHUB
0 parents  commit 64d702d

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

DHT11_interface.c

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
////////////////////////////////////////////////////////////////////////////////
2+
// Fun??o para ler as informa??es de temperatura e umidade no sensor DHT11 //
3+
////////////////////////////////////////////////////////////////////////////////
4+
5+
#define dht11_dir trisB.f1 //bit de configuração da direção I/O da porta de comunicação com o sensor DHT11
6+
#define dht11dado portB.f1 //porta de comunicação com o sensor DHT11
7+
8+
//variáveis usadas na leitura do sensor de umidade e temperatura DHT11
9+
unsigned short int temperatura1;
10+
unsigned short int temperatura2;
11+
unsigned short int umidade1;
12+
unsigned short int umidade2;
13+
unsigned short int checksum;
14+
15+
void Inicia_ambiente(){
16+
ANSELB.f1 = 0; //configura o pino de comunicação com o módulo DHT11 como digital
17+
dht11_dir = 0; //define porta como saída
18+
dht11dado = 1; //envia 1 na porta de saída
19+
}
20+
21+
void dht11_read(){
22+
int count;
23+
INTCON.GIE = 0; //desliga chave geral das interrupções
24+
temperatura1=0; //zera variáveis antes da comunicação
25+
temperatura2=0; //zera variáveis antes da comunicação
26+
umidade1=0; //zera variáveis antes da comunicação
27+
umidade2=0; //zera variáveis antes da comunicação
28+
checksum=0; //zera variáveis antes da comunicação
29+
//inicia comunicação requisitando o envio dos dados
30+
dht11_dir = 0; //define como saída
31+
dht11dado = 0; //envia 0
32+
delay_ms(20); //por 20 milisegundos
33+
dht11dado = 1; //envia 1
34+
delay_us(42); //por 42 microsegundos
35+
dht11_dir = 1; //define como entrada
36+
while(dht11dado); //aguarda inicio do recebimento dos dados
37+
//recebe resposta
38+
while(!dht11dado); //recebe 0 (zero)
39+
while(dht11dado); //recebe 1 (um)
40+
//inicia recepção dos dados
41+
while(!dht11dado); //recebe 0 (zero)
42+
for(count=1; count<=8; count++){ //recebe a 1ª parte do valor da umidade
43+
delay_us(40);
44+
if(dht11dado){umidade1++ ; while(dht11dado);}
45+
umidade1<<=1;
46+
while(!dht11dado);
47+
}
48+
for(count=1; count<=8; count++){ //recebe a 2ª parte do valor da umidade
49+
delay_us(40);
50+
if(dht11dado){umidade2++ ; while(dht11dado);}
51+
umidade2<<=1;
52+
while(!dht11dado);
53+
}
54+
for(count=1; count<=8; count++){ //recebe a 1ª parte do valor da temperatura
55+
delay_us(40);
56+
if(dht11dado){temperatura1++ ; while(dht11dado);}
57+
temperatura1<<=1;
58+
while(!dht11dado);
59+
}
60+
for(count=1; count<=8; count++){ //recebe a 2ª parte do valor da temperatura
61+
delay_us(40);
62+
if(dht11dado){temperatura2++ ; while(dht11dado);}
63+
temperatura2<<=1;
64+
while(!dht11dado);
65+
}
66+
for(count=1; count<=8; count++){ //recebe o checksum para confirmar se a mensagens foi recebida corretamente
67+
delay_us(40);
68+
if(dht11dado){checksum++ ; while(dht11dado);}
69+
checksum<<=1;
70+
while(!dht11dado);
71+
}
72+
umidade1>>=1;
73+
temperatura1>>=1;
74+
checksum>>=1;
75+
if(checksum==temperatura1+temperatura2+umidade1+umidade2){ //se o checksum estiver correto
76+
77+
}
78+
INTCON.GIE = 1; //religa chave geral das interrupções
79+
}
80+

README.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Biblioteca criada para a leitura das informação de temperatura e umidade do sensor DHT11

0 commit comments

Comments
 (0)