C++ 我的arduino传感器程序有什么问题?
我在这里购买了这款湿度/温度传感器: 我在这里读到了数据: 我试图从我的C++课程中使用一些基本的编程,但我不知道问题是什么?看起来传感器输入的数据没有发送任何信息。在数据表上,我需要发送一个5V的输入信号(20-40ms),然后等待传感器的响应并存储输入位。传感器数据始终为0。我不明白为什么C++ 我的arduino传感器程序有什么问题?,c++,arduino,C++,Arduino,我在这里购买了这款湿度/温度传感器: 我在这里读到了数据: 我试图从我的C++课程中使用一些基本的编程,但我不知道问题是什么?看起来传感器输入的数据没有发送任何信息。在数据表上,我需要发送一个5V的输入信号(20-40ms),然后等待传感器的响应并存储输入位。传感器数据始终为0。我不明白为什么 /* Code for the RHT03 Sensor 8/5/12 */ int i=0; int SensorVccPin = 13; int datapin = 7; int bitche
/* Code for the RHT03 Sensor 8/5/12 */
int i=0;
int SensorVccPin = 13;
int datapin = 7;
int bitcheck1;
int bitcheck2;
int temp[16];
int humidity[16];
int sensorcheck[8];
void setup()
{
pinMode(SensorVccPin, OUTPUT);
pinMode(datapin, INPUT);
}
void loop()
{
// This is the STEP #1
digitalWrite(SensorVccPin, LOW);
delayMicroseconds(10);
digitalWrite(SensorVccPin, HIGH);
delayMicroseconds(30);
digitalWrite(SensorVccPin, LOW);
/* NEED TO DO BIG NESTED IF STATEMENTS!!!!*/
digitalRead(datapin);
if (digitalRead(datapin) == LOW) // FIRST BIG IF
while(digitalRead(datapin) == LOW)
{
delayMicroseconds(2);
}
while(digitalRead(datapin) == HIGH)
{
delayMicroseconds(2);
}
// STEP #2
for (int i = 0; i<16; i++)
{
while(digitalRead(datapin) == LOW)
{
delayMicroseconds(2);
}
delayMicroseconds(10);
bitcheck1 = digitalRead(datapin); // maybe store as an array
delayMicroseconds(17); // 50 sec pause // 27us = 0 bit, 70us is 1 bit data
delayMicroseconds(15);
bitcheck2 = digitalRead(datapin);
if (bitcheck1==bitcheck2)
{
temp[i]=1;
delayMicroseconds(28);
} else {
temp[i]=0;
}
}
for (int i = 0; i<16; i++)
{
while(digitalRead(datapin) == LOW)
{
delayMicroseconds(2);
}
delayMicroseconds(10);
bitcheck1 = digitalRead(datapin); // maybe store as an array
delayMicroseconds(17); // 50 sec pause // 27us = 0 bit, 70us is 1 bit data
delayMicroseconds(15);
bitcheck2 = digitalRead(datapin);
if (bitcheck1==bitcheck2)
{
humidity[i]=1;
delayMicroseconds(28);
} else {
humidity[i]=0;
}
}
for (int i = 0; i<8; i++)
{
while(digitalRead(datapin) == LOW)
{
delayMicroseconds(2);
}
delayMicroseconds(10);
bitcheck1 = digitalRead(datapin); // maybe store as an array
delayMicroseconds(17); // 50 sec pause // 27us = 0 bit, 70us is 1 bit data
delayMicroseconds(15);
bitcheck2 = digitalRead(datapin);
if (bitcheck1==bitcheck2)
{
sensorcheck[i]=1;
delayMicroseconds(28);
} else {
sensorcheck[i]=0;
}
}
}
/*RHT03传感器8/5/12的代码*/
int i=0;
int传感器vccpin=13;
int-datapin=7;
int位校验1;
int位校验2;
内部温度[16];
国际湿度[16];
int传感器检查[8];
无效设置()
{
引脚模式(传感器VCCPIN,输出);
引脚模式(数据引脚,输入);
}
void循环()
{
//这是第一步
数字写入(传感器VCCPIN,低);
延迟微秒(10);
数字写入(传感器VCCPIN,高);
延迟微秒(30);
数字写入(传感器VCCPIN,低);
/*需要做大的嵌套IF语句*/
数字读取(数据PIN);
if(digitalRead(datapin)=低)//第一个大if
而(数字读取(数据引脚)=低)
{
延迟微秒(2);
}
而(数字读取(数据引脚)=高)
{
延迟微秒(2);
}
//第2步
对于(inti=0;i,数据表上说
MCU将拉低数据总线,此过程必须至少超过
1~10ms,确保RHT03能够检测到MCU信号
你的密码是
digitalWrite(SensorVccPin, LOW);
delayMicroseconds(10);
digitalWrite(SensorVccPin, HIGH);
您似乎延迟了10µs而不是10 ms。如果我正确阅读数据表,所有操作都在同一个管脚上。SensorVccPin和datapin是否物理连接到同一个传感器管脚?如果您使用相同的管脚,并在初始转换后将其模式从输出切换到输入,是否会更简单、更不容易出错?是的,它是有道理,但我不明白。传感器上有一个Vcc引脚和一个数据引脚,我认为Vcc必须“发送一种脉冲”20-40us,然后从数据管脚读取数据,否?对不起,我主要不是英语,这是我在EE的第二年。感谢回答否,Vcc是恒定的,整个脉冲序列必须应用于/读取数据管脚(管脚2)。