Boa tarde amigos, gostaria da ajuda de vocês para que possa entender como fazer a aquisição do sinal de um DHT11 com o compilador CCS.

   Eu encontrei no fórum do CCS um exemplo mas não consegui fazer o mesmo funcionar e nem simular no proteus.

Minha ideia é somente mostrar em um display a temperatura e a umidade. Ja tenho a biblioteca para proteus e para CCS porem não obtive sucesso na simulação.

Desde já agradeço

Exibições: 648

Responder esta

Respostas a este tópico

Oi FCS, boa tarde.
Suas informações estāo muito vagas.
Qual PIC vc estå tentando usar?
Qual seu codigo? Etc..
Veja se este link ajuda.

http://labdegaragem.com/m/group/discussion?id=6223006%3ATopic%3A352870
Rui
Oi Fernando. Não conheço o PIC/CCS mas fiz um experimento legal com o DHT11 e o RPi. Caso você não tenha o site para apresentar os dados, fica a dica do que usei que é muito fácil e funciona super bem. Acredito que você também poderia usar com o mesmo site com o PIC (eles dão dicas).
https://thingspeak.com/channels/89527

Abaixo o vídeo de meu experimento:
http://youtu.be/hJmctXPE96o

Um abraço

Boa noite meu caros amigos, agradeço de coração cada auxilio que recebi, como o Rui Viana comentou coloquei pouca informação mesmo então lá vai, isso também vai me ajudar com o Cesar Luis.

#include "C:\Users\Fernando\Desktop\inicio.h"
#include "DHT11.h"// resolver problema na inclusão desta biblioteca
#FUSES NOWDT, PUT, NOPROTECT, NOCPD
#define LCD_DATA_PORT getenv("SFR:PORTB")
#define dhttype dht11;
#define dhtpin pin_a1
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#define LCD_TYPE 2
#include <lcd.c>


int tela=1;
int temp1=0, temp2=0, temp3=0, temp4=0;
int umid1=0, umid2=0, umid3=0, umid4=0;
//temperatura recebe dados de dht11 (temp1, temp2, temp3, temp4)
//umidade recebe dados de dht11 (umid1, umid2, umid3, umid4)
void main()
{
lcd_init();

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
while (true){
if(input(pin_a0)==1){
tela++;
if(tela>5){//por enquanto maior que 5
tela=1;
}
delay_ms(350);
}
if(input(pin_a1)==1){
temp1= temp1 + 1;
if(temp1>30){
temp1=0;}
delay_ms(20);
}
if(input(pin_a2)==1){
temp2= temp2 + 1;
if(temp2>30){
temp2=0;}
delay_ms(20);
}
if(input(pin_a3)==1){
temp3= temp3 + 1;
if(temp3>30){
temp3=0;}
delay_ms(20);
}
if(input(pin_a4)==1){
temp4= temp4 + 1;
if(temp4>30){
temp4=0;}
delay_ms(20);
}
if(input(pin_a5)==1){
umid1= umid1 + 1;
delay_ms(20);
}
if(input(pin_e0)==1){
umid2= umid2 + 1;
delay_ms(20);
}
if(input(pin_e1)==1){
umid3= umid3 + 1;
delay_ms(20);
}
if(input(pin_e2)==1){
umid4= umid4 + 1;
delay_ms(20);
}
if(tela==1){
printf(lcd_putc,"\fBEM VINDO!");
printf(lcd_putc,"\nCONTROLE GERAL");
delay_ms(1000);
}
if(tela==2){

lcd_gotoxy(1,1);
printf(lcd_putc,"\fSENSOR 1");
printf(lcd_putc, "\nTEMP1:%u " "UMID1:%u",temp1,umid1);
delay_ms(1000);
}
if(tela==3){
lcd_gotoxy(1,1);
printf(lcd_putc,"\fSENSOR 2");
printf(lcd_putc, "\nTEMP2:%u " "UMID2:%u",temp2,umid2);
delay_ms(1000);
}
if(tela==4){
lcd_gotoxy(1,1);
printf(lcd_putc,"\fSENSOR 3");
printf(lcd_putc, "\nTEMP3:%u " "UMID3:%u",temp3,umid3);
delay_ms(1000);
}
if(tela==5){
lcd_gotoxy(1,1);
printf(lcd_putc,"\fSENSOR 4");
printf(lcd_putc, "\nTEMP4:%u " "UMID4:%u",temp4,umid4);
delay_ms(1000);
}


}
}

minha UMID1 e TEMP1 são as variáveis que devem receber os dados, vou fazer esse exemplo do Cesar e posto aqui os resultados, também gostaria de se alguém conseguir entender e me dar uma ajudinha baseada nesse programa agradeço muito...forte abraço a todos.

Att

Ola FCS.. tenho um code todo comentado q nao testei, mas é p compilador ccs, fiz apenas uma simples simulacao no proteus, mas sem muito resultado,acredito ser por nao ter o sensor correto la.. se tiver os componentes, altere p um Pic q suporte o ht , alter o q achar necessario e boa sorte. la vai: 

#include <16F877A.h>
#device *=16
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES xt //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected

#use delay(clock=4000000) //Programa feito para trabalhar com cristal de 4Mhz

#ZERO_RAM

#include <LCD.h>//Adiciona a biblioteca para acionamento do diplay de LCD
/******************************************************************************
* Ligações do LCD *
* D7 -> RD7 (PORTD 7) *
* D6 -> RD6 (PORTD 6) *
* D5 -> RD5 (PORTD 5) *
* D4 -> RD4 (PORTD 4) *
* RS -> RD3 (PORTD 3) *
* EN -> RD2 (PORTD 2) *
* R/W -> Deve ser conectado ao GND *
* VCC -> Deve ser conectado ao +5V *
* GND -> Deve ser conectado ao GND *
* VO -> Deve ser conectado ao

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço