Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

CCS C İLE DHT11 ISI NEM sensör kodu

Başlatan point_blank, 22 Ekim 2012, 19:10:27

point_blank

merhaba arkadaşlar elimde bir tane DHT11 ısı nem sensörü var ben bununla ısı nem devresi yapacam ancak elimde ccs c ile ilgili olan kodu yok yardım edermisiniz ederseniz sevinirim internette bir tane var ama onuda nasıl kullanacagımı bilmiyorum internetten bulduğum kod


#define dht11 PIN_C3

void dht_init()

{

   delay_ms(1);

   OUTPUT_HIGH(dht11);

}

void read_dht()

{

   byte GlobalErr=0;

   byte dht_in;

   byte i;

   byte dht_check_sum;

   dht_init();

   OUTPUT_LOW(dht11);

   delay_ms(18);

   OUTPUT_HIGH(dht11);

   delay_us(40);

   delay_us(40);//

   dht_in=input(dht11);

   if(dht_in)

   {

      GlobalErr=1;

      return;

   }

   delay_us(80);

   dht_in=input(dht11);

   if(!dht_in)

   {

      GlobalErr=2;

      return;

   }

   delay_us(80);

   for (i=0; i<4; i++)

   {

      dht_dat = leer_dht_dat();

   }

   OUTPUT_HIGH(dht11);

}

byte leer_dht_dat()

{

   byte i = 0;

   byte result=0;

   for (i=0; i< 8; i++)

   {

      while(input(dht11)==0);

      delay_us(30);

      if (input(dht11)==1)

      {

         result |=(1<<(7-i));

      }

      while (input(dht11)==1);

   }

   return result;

}

Okan AKÇA

#1
üzerinde uğraşmak lazım deneyelim

mesaj birleştirme:: 22 Ekim 2012, 21:36:56



#define dht22 PIN_A2
#bit dht_io = 0xf92.2
byte dht22_dat[5];

Void dht_init (void){
   dht_io=0;
   delay_ms(1);
   output_high(dht22);
}

byte leer_datos_dht(){
   byte i = 0;
   byte result=0;
   for (i=0; i< 8; i++) {
      //We enter this during the first start bit (low for 50uS) of the byte
      //Next: wait until pin goes high
      while(input(dht22)==0);
      delay_us(30);
      if (input(dht22)==1){//Was: if(PINC & _BV(dht_PIN))
         result |=(1<<(7-i));
      }
      while (input(dht22)==1);
      //Was: while((PINC & _BV(dht_PIN)));
   }//end of "for.."
   
   return result;
}

Void leer_dht22 (float &dhthum,float &dthtemp){
   //byte GlobalErr=0;
   byte dht22_in, i, dht22_checksum;
   int16 temperatura, humedad;
   float temp,hum;
   
   dht_io=0; // configurar el pin como salida
   output_high(dht22);
   delay_us(20);
   output_low(dht22);
   delay_ms(18);
   
   output_high(dht22);
   delay_us(22);
   dht_io=1;// configurar el pin como entrada
   delay_us(5);
   dht22_in=input(dht22);
   
   if(dht22_in) {
      //GlobalErr=1;
      printf("\r\ndht condicion 1 de inicio no encontrada");
      return;
   }
   
   delay_us(80);
   dht22_in=input(dht22);
   
   if(!dht22_in){
      //GlobalErr=2;
      printf("\r\ndht condicion 2 de inicio no encontrada");
      return;
   }
   
   delay_us(80);
   
   for (i=0; i<5; i++){
      dht22_dat[ i ] = leer_datos_dht(); // capturando datos
   }
   
   dht_io=0;
   delay_us(10);
   output_high(dht22);
   
   dht22_checksum= dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3];
   
   if(dht22_dat[4]!=dht22_checksum){
      //GlobalErr=3;
      printf("\r\nDHT checksum error");
   }
   
   humedad = make16(dht22_dat[0],dht22_dat[1]);
   temperatura = make16(dht22_dat[2],dht22_dat[3]);
   
   hum = humedad;
   temp = temperatura;
   
   dhthum = (hum)/10;
   dthtemp = (temp)/10;
}



#include <18f4550.h>           //PIC utilizado
#device adc=10
//#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG
//#use delay(clock=20M)

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48M)


//Pal bootloader
#build (reset=0x1000,interrupt=0x1008)
#org 0x0000,0x0FFF{}

#use i2c(Master,slow,sda=PIN_A4,scl=PIN_A5)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include "dht22.c"
#include  "sht21.c"

//#include <LCD20X4.c>

void main(){
   int16 lux;
   float dhthum, dthtemp,temp,humid;
   setup_adc_ports(AN0|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   //EXT_INT_EDGE(H_TO_L);
   
   //lcd_init();
   
   //lcd_putc("\fSensor T-H\nDHT22 RHT03");
   printf ("\f\r\nSensor de temperatura y humedad:\r\nDHT22-RHT03");
   delay_ms(500);
   
   //printf(lcd_putc,"\fHola-Saludos\nEnviame un dato");
   dht_init();
   sht21_init();
   delay_ms(300);
   //lcd_putc("\f");
while(true){
   set_adc_channel(0);
   delay_ms(1);
   lux=read_adc();
   printf("\r\nAdc =: %lu ",lux);
   
   delay_ms(10);
   //leer_dht();
   leer_dht22(dhthum, dthtemp);
   sht21_both(temp,humid);
   delay_ms(10);

   printf("\r\nDHT22 Humedad = %f %%",dhthum);
   delay_ms(1);
   
   printf("\r\nDHT22 Temperatura = %f %cC", dthtemp,223);
   delay_ms(1);
   
   printf("\r\nSHT21 RH = %f %%",humid);
   delay_ms(1);
   
   printf("\r\nSHT21 T = %f %cC", temp,223);
   delay_ms(1);
   
   printf("\r\n...terminado..\n");
   
   delay_ms(2000);
}
}

point_blank

ama sht 11 de DATA VE SCK var bunda ise DATA ve NC var NC bacagı bosta kalıo nasıl oluyo yardım edermisiniz

point_blank

tesekkürler kodu denedim olmadı devre zaten kurulu yazılımını yazıp atmam gerekiyor verdiğiniz kodlarla yapıyorum olmuyor ayrıca dht11 sensörü 16f877a nın D1 pinine baglı bilginiz olsun yardımınız için tesekkürler

zafer