我是初级低级编程人员,并试图将DHT22传感器连接到我的Adafruit M0 Lora上进行温度读数。到目前为止,我只检索NaN
s。
我设置的连接与this sketch相同,除了使用引脚13而不是引脚2用于传感器输入/输出。我知道为不同的羽毛板制作的草图,虽然逻辑应该与我能理解的一致。
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
// pin connected to DH22 data line
#define DATA_PIN 13
DHT_Unified dht(DATA_PIN, DHT22);
void setup() {
// start the serial connection
Serial.begin(9600);
// wait for serial monitor to open
while(! Serial);
// initialize dht22
dht.begin();
// connect to io.adafruit.com
Serial.print("Connecting to Adafruit IO");
// we are connected
Serial.println();
}
void loop() {
sensors_event_t event;
dht.temperature().getEvent(&event);
float celsius = event.temperature;
float fahrenheit = (celsius * 1.8) + 32;
Serial.print("celsius: ");
Serial.print(celsius);
Serial.println("C");
Serial.print("fahrenheit: ");
Serial.print(fahrenheit);
Serial.println("F");
// save fahrenheit (or celsius) to Adafruit IO
dht.humidity().getEvent(&event);
Serial.print("humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
delay(5000);
}
是否有人能够帮助指出我做错了什么?我尝试了9600以外的其他波特,以及更换可编程引脚。任何帮助都将非常感激。
答案 0 :(得分:1)
我认为这不是代码问题。针脚13很特别。选择不同的别针。
具体做法是:
注意:数字引脚13比其他数字引脚更难用作数字输入,因为它上面连接了一个LED和电阻,焊接到大多数电路板的电路板上。如果你启用其内部20k上拉电阻,它将挂在1.7V左右,而不是预期的5V,因为板载LED和串联电阻将电压降低,这意味着它总是返回低电平。如果必须将引脚13用作数字输入,则将其pinMode()设置为INPUT并使用外部下拉电阻。