Не удается получить никаких показаний от датчика DHT22 подключенного к Arduino M0 Pro

Я напрямую подключил DHT22 к моему Arduino M0 Pro. Я положил резистор 10k на данные и V+ вывод датчика. Данные подключены к контакту 5, и я подключил его к выходу 3,3 В Arduino.

Я просто пытаюсь увидеть некоторые показания датчика через консоль SerialUSB. Я скачал и распаковал библиотеки DHT, которые я получил на сайте Adafruit/GitHub. Насколько я знаю, у меня есть эти библиотеки в нужном каталоге - C:\Program Файлы (x86)\Arduino\библиотеки\DHT... Я также установил библиотеку Adafruit Unified Sensor library на IDE.

Я пытаюсь использовать программу тестера, которая предоставляется, это компилирует хорошо, но распечатка SerialUSB печатает:

Failed to read from DHT sensor!
Failed to read from DHT sensor!
Failed to read from DHT sensor!

И так далее...

Я попробовал другой датчик DHT22 безрезультатно.

Единственная часть кода, которую я изменил, - это контакт, измененный с Serial на SerialUSB.

Не уверен, что я должен изменить что-нибудь еще? Или я делаю что - то действительно глупое!


Вот код:

// Пример тестового скетча для различных датчиков влажности/температуры DHT
// Автор: ladyada, public domain

#include "DHT.h"

#define DHTPIN 5     // к какому цифровому контакту мы подключены

// Раскомментируйте любой тип, который вы используете!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Подсоедините контакт 1 (слева) датчика к +5 В
// ПРИМЕЧАНИЕ: Если вы используете плату с логикой 3,3 В, например Arduino Due, подключите вывод 1
// до 3,3 В вместо 5 В!
// Подсоедините контакт 2 датчика к любому вашему DHTPIN-контакту
// Подсоедините контакт 4 (справа) датчика к ЗАЗЕМЛЕНИЮ
// Подсоедините резистор 10K от контакта 2 (данные) к контакту 1 (питание) датчика

// Инициализировать датчик DHT.
// Обратите внимание, что более старые версии этой библиотеки использовали необязательный третий параметр для
// настройки таймингов для более быстрых процессоров.  Этот параметр больше не нужен
// поскольку текущий алгоритм чтения DHT настраивается на работу с более быстрыми процессами.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  SerialUSB.begin(9600);
  SerialUSB.println("DHTxx test!");

  dht.begin();
}

void loop() {
  // Подождите несколько секунд между измерениями.
  delay(2000);

  // Считывание температуры или влажности занимает около 250 миллисекунд!
  // Показания датчика также могут быть до 2 секунд "старыми" (это очень медленный датчик)
  float h = dht.readHumidity();
  // Считывание температуры в градусах Цельсия (по умолчанию)
  float t = dht.readTemperature();
  // Считывание температуры по Фаренгейту (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Проверьте, не сбились ли какие-либо чтения, и выйдите рано (чтобы попробовать еще раз).
  if (isnan(h) || isnan(t) || isnan(f)) {
    SerialUSB.println("Failed to read from DHT sensor!");
    return;
  }

  // Вычислить индекс тепла в градусах Фаренгейта (по умолчанию)
  float hif = dht.computeHeatIndex(f, h);
  // Вычислить тепловой индекс в градусах Цельсия (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  SerialUSB.print("Влажность: ");
  SerialUSB.print(h);
  SerialUSB.print(" %\t");
  SerialUSB.print("Температура: ");
  SerialUSB.print(t);
  SerialUSB.print(" *C ");
  SerialUSB.print(f);
  SerialUSB.print(" *F\t");
  SerialUSB.print("Тепловой индекс: ");
  SerialUSB.print(hic);
  SerialUSB.print(" *C ");
  SerialUSB.print(hif);
  SerialUSB.println(" *F");
}

, 👍1

Обсуждение

Не имеет отношения к вашей проблеме, но к вашему сведению C:\Program Files (x86)\Arduino\libraries\DHT - это неправильное место для установки библиотек. Это действительно работает но проблема заключается в том что каждый раз когда вы обновляете до новой версии Arduino IDE все что вы устанавливаете C:\Program Файлы (x86)\Arduino будут потеряны. Вот почему вы всегда должны устанавливать библиотеки в подпапку "библиотеки" вашей папки sketchbook. Видишь https://www.arduino.cc/en/Guide/Libraries., @per1234

Спасибо, да, мне пришлось додуматься до этого нелегким путем, хотя еще раз спасибо., @Don'tCallMeShirley


1 ответ


1

Обнаружил, в чем была ошибка, это было короткое замыкание припоя между контактами на пользовательской печатной плате, которая находилась поверх платы Arduino. Моя беда! По крайней мере, сейчас он у меня работает!

,