Merhaba arkadaşlar elimde bir tane DHT11 ısı nem sensörü var fakat bunun ccs c ile ilgili olan kodu bulamadım yardım edermisiniz. Ayrıca nasıl kullanacam bu konudada bilgi verirseniz sevinirim şimdiden teşekkürler.
Merhaba;
altaki kodu nette buldum.
#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[i] = 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;
}
Kaynak:http://www.zeteknoloji.com/DHT11
tesekkürler kod için bunu nasıl kullanacam nemi nasıl tanıtacam ve sıcaklığı kodda read ile okuturum ama nem için veya sıcaklık için nasıl oalcak
bu kodda nem oranını nasıl yazdıracam acıklma yapılmamış kodda PIN_C3 bgaladım read_dht(); ile okudum
fakat ekrana bu nemi veya sıcaklığı nasıl yazdıracam burda hangisi nemin ve sıcaklığın degişkeni
#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;
}
http://www.todopic.com.ar/foros/index.php?topic=35680.0 (http://www.todopic.com.ar/foros/index.php?topic=35680.0)
arkadaşlar netten o kadar arastırdım bulamadım lütfen yardım edermisiniz
(http://hackadaycom.files.wordpress.com/2012/01/dht11sensor1-e1326310701210.jpg)
Altaki kısmı programın basında tanımla.
char message1[] = "Temp = 00.0 C";
char message2[] = "RH = 00.0 %";
unsigned short CheckSum, i;
unsigned short T_Byte1, T_Byte2, RH_Byte1, RH_Byte2;
RH_Byte1 = read_dht();
RH_Byte2 = read_dht();
T_Byte1 = read_dht();
T_Byte2 = read_dht();
CheckSum = read_dht();
if (CheckSum == ((RH_Byte1 + RH_Byte2 + T_Byte1 + T_Byte2) & 0xFF))
{
message1[7] = T_Byte1/10 + 48;
message1[8] = T_Byte1%10 + 48;
message1[10] = T_Byte2/10 + 48;
message2[7] = RH_Byte1/10 + 48;
message2[8] = RH_Byte1%10 + 48;
message2[10] = RH_Byte2/10 + 48;
message1[11] = 223; // Degree symbol
}
// Bu kısmı lcd fonksiyonu ekleyerek ekranda gozukmesini sağlayın.
// message1 dizisinde sıcaklık.
// message2 dizisinde ise nem değerleri mevcut.
else{
// Buraya Lcd fonksiyonu ekle sensor
// lcd yazı olarak. Hatalı işlem tekrar deneyin yaz veya sensorden bilgi alınamadı gibi..
}
Burada DHT11'in yapısı anlatılmış. Buna göre DHT11 tek kablo üzerinden iki yönlü seri iletişim yapabiliyormuş.
http://myo.karatekin.edu.tr/mkt2012/calistay-cd/ekler/bildiriler/16.pdf (http://myo.karatekin.edu.tr/mkt2012/calistay-cd/ekler/bildiriler/16.pdf)
Burada da SHT11 kullanılarak sıcaklık ve nem ölçümü anlatılmış.
http://www.bilesim.com.tr/yazdir.php?t=3&id=4805&sn=0 (http://www.bilesim.com.tr/yazdir.php?t=3&id=4805&sn=0)