Не удается получить никаких показаний от датчика 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 ответ
Обнаружил, в чем была ошибка, это было короткое замыкание припоя между контактами на пользовательской печатной плате, которая находилась поверх платы Arduino. Моя беда! По крайней мере, сейчас он у меня работает!
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
Не имеет отношения к вашей проблеме, но к вашему сведению
C:\Program Files (x86)\Arduino\libraries\DHT
- это неправильное место для установки библиотек. Это действительно работает но проблема заключается в том что каждый раз когда вы обновляете до новой версии Arduino IDE все что вы устанавливаете C:\Program Файлы (x86)\Arduino будут потеряны. Вот почему вы всегда должны устанавливать библиотеки в подпапку "библиотеки" вашей папки sketchbook. Видишь https://www.arduino.cc/en/Guide/Libraries., @per1234Спасибо, да, мне пришлось додуматься до этого нелегким путем, хотя еще раз спасибо., @Don'tCallMeShirley