0

我是低级编程的新手,并试图将 DHT22 传感器连接到我的 Adafruit M0 Lora 上以读取温度。到目前为止,我只检索NaNs。

我设置的连接与此草图相同,除了使用针 13 而不是针 2 用于传感器输入/输出。我知道草图是为不同的羽毛板制作的,尽管据我所知,逻辑应该保持不变。

我正在使用Adafruit 的 DHT 库

#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 以外的其他波特率,以及更改了可编程引脚。任何帮助都将不胜感激。

4

1 回答 1

1

我不认为这是代码问题。引脚 13 是特殊的。选择不同的引脚。

具体来说:

注意:数字引脚 13 比其他数字引脚更难用作数字输入,因为它连接了一个 LED 和电阻器,大多数电路板上都焊接到电路板上。如果启用其内部 20k 上拉电阻,它将挂在 1.7V 左右,而不是预期的 5V,因为板载 LED 和串联电阻将电压电平拉低,这意味着它始终返回 LOW。如果您必须将引脚 13 用作数字输入,请将其 pinMode() 设置为 INPUT 并使用外部下拉电阻。

来自Arduino 文档

于 2017-06-22T17:46:18.630 回答