hgmyaoming 发表于 2015-4-2 17:03:42

DHT11模块使用问题

如果采集数据正常DHT11各管脚的电压应该是多少
我的程序是这样的:
#define DHT11_PIN 3
int Led=8;
int Buzzer=7;

byte read_dht11_dat()
{
byte i = 0;
byte result = 0;
for(i=0;i<8;i++)
{
    while(!(PINC&_BV(DHT11_PIN)));
    delayMicroseconds(30);
    if(PINC&_BV(DHT11_PIN))
      result|=(1<<(7-i));
    while((PINC&_BV(DHT11_PIN)));
}
return result;
}
void setup()
{
DDRC|=_BV(DHT11_PIN);
PORTC|=_BV(DHT11_PIN);
pinMode(Led,OUTPUT);
pinMode(Buzzer,OUTPUT);
Serial.begin(9600);
Serial.println("Ready");
}

void loop()
{
byte dht11_dat;
byte dht11_in;
byte i;
PORTC &= ~_BV(DHT11_PIN);
delay(18);
PORTC|=_BV(DHT11_PIN);
delayMicroseconds(40);
DDRC &= ~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);
if(dht11_in)
{
    Serial.println("dht11 start condition 1 not met");
    return;
}

delayMicroseconds(80);
dht11_in=PINC & _BV(DHT11_PIN);
if(!dht11_in)

{
    Serial.println("dht11 start condition 2 not met");
    return;
}

delayMicroseconds(80);
for(i=0;i<5;i++)
    dht11_dat=read_dht11_dat();
DDRC|=_BV(DHT11_PIN);
PORTC|=_BV(DHT11_PIN);
byte dht11_check_sum = dht11_dat+dht11_dat+dht11_dat+dht11_dat;
if(dht11_dat!=dht11_check_sum)
{
    Serial.println("DHT11 checksum error");
}

Serial.print("Current humdity= ");
Serial.print(dht11_dat,DEC);
Serial.print(".");
Serial.print(dht11_dat,DEC);
Serial.print("%");
Serial.print("temperature = ");
Serial.print(dht11_dat,DEC);
Serial.print(".");
Serial.print(dht11_dat,DEC);
Serial.println("C");
if(dht11_dat==25)
    digitalWrite(Led,HIGH);
else
    digitalWrite(Led,LOW);
if(dht11_dat==28)
    digitalWrite(Buzzer,LOW);
else
    digitalWrite(Buzzer,HIGH);
delay(2000);
}

但是在窜口反映是这样,dht11 start condition 1 not met
电路连接检测了几遍没有连错

迷你强 发表于 2015-4-2 17:17:37

数据管脚10K电阻上拉到5V

hgmyaoming 发表于 2015-4-3 02:36:53

具体怎么接啊?

彩色大冰棍丶 发表于 2015-4-26 14:12:45

能不能在详细点
页: [1]
查看完整版本: DHT11模块使用问题