Arduino用温湿度传感器控制继电器,为什么点了串口助手才能运行,拔掉usb线,直接外界9V电源却用不了

用温湿度传感器控制继电器,为什么点了串口助手才能运行,拔掉usb线,直接外界9V电源却用不了,以下是程序,目的是在湿度达到40%的时候继电器吸合,45%后,继电器断开,求各位大神指教问题出在哪了,温湿度传感器型号DHT11。本人Arduino新手,大家多多包涵。
#define DHT11_PIN 0

int relay=7;
byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++){
while(!(PINC & _BV(DHT11_PIN))); // wait for 50us
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(relay,OUTPUT);
}
void loop()
{
byte dht11_dat[5];
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);

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

delayMicroseconds(80);

for (i=0; i<5; i++)
dht11_dat[i] = read_dht11_dat();
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
if(dht11_dat[0]<=40)
{
digitalWrite(relay,HIGH);

}
else if(dht11_dat[0]>=45)

{
digitalWrite(relay,LOW);

}
delay(2000);
}

我用的是wifi透传模块,如果你的也是wifi透传,可以让wifi模块连接虚拟串口的tcp地址,然后串口监视器就能读数了,如果还不行,建议换一个透传模块
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-22
1\USBshi 5V,你用9V不知道电路中的元件承受得了不
2、点了串口助手,是发送了数据吗?追问

以前做机器人的时候,都是给板子用9V供的电。
点了串口助手板子上的TX和RX亮了之后就好用了

追答

没有实际发送数据吗?串口如果实际发数据是和代码有关的。 接电源后跑一个和串口无关的程序看看如何,比如LED

追问

好的 我试试

本回答被提问者采纳