Как получить тип датчика DHT
Я сделал простой регулятор температуры на DHT11. Я хочу, чтобы он работал и с DHT22, имея такой же код.
Однако я не могу найти способ узнать, какой тип датчика установлен. Есть ли способ?
@zhekaus, 👍0
Обсуждение2 ответа
Лучший ответ:
Для DHT можно использовать другую библиотеку: https://github.com/markruys/arduino-DHT. Хотя библиотека довольно старая, она отлично работает и имеет функцию автоматического определения.
Ничего себе, я попробую эту библиотеку. Спасибо!, @zhekaus
Я не думаю, что это возможно.
Что вам нужно сделать, так это передать тип (DHT11 или DHT12) в код, сохранить его и соответствующим образом изменить вычисления (или функции).
Если вы используете класс, вы можете передать его в качестве аргумента конструктора, поэтому пользователю библиотеки нужно настроить его только один раз (в конструкторе, которому он принадлежит). Сделайте это перечислением, скопируйте его в переменную класса, и все методы внутри вашего класса смогут использовать этот тип.
Что-то вроде (не отмечено):
MyDht.hpp:
class MyDht
{
public:
enum EType { DHT11, DHT12 };
public MyDht(EType type);
private:
EType _type;
}
Dht.cpp:
MyDht::MyDht(EType type)
{
_type = type;
}
И вы создаете класс следующим образом:
MyDht sensor1(MyDht::DHT11);
MyDht sensor2(Mydht::DHT12);
На самом деле это возможно. Если тип DHT неправильный, я получаю пустые результаты. Затем я пробую другой тип, и результаты правильные., @zhekaus
Хорошо, тогда используйте свой метод, если вы не знаете, и используйте мой, если хотите сделать это программно... На самом деле, вы можете объединить оба решения, создав (динамически) правильный тип после вашей «однократной проверки», Создайте указатель на MyDht и создайте экземпляр DHT11 или DHT12., @Michel Keijzers
- DHT11 аналоговый или цифровой?
- Код считывания датчика DHT22 странно интерпретирует отрицательные значения (распространенная проблема)
- Как добавить калибровку контроллера влажности с помощью датчика UNO и DHT22?
- Для управления переключением реле в nextion с помощью микроконтроллера esp32
- Преобразование float в байт, от Arduino до Raspberry Pi i2c
- Некорректное чтение с DHT22 (на плате Nano)
- Мой модуль DHT22 вообще не работает
- Сравнение текстовой строки с текстовым выводом (DHT22)
поиск в Интернете показывает, что DHT11 требуется 1 секунда между показаниями ... DHT22 требуется 2 секунды между показаниями .... запустите тесты .... посмотрите, что произойдет, если вы попытаетесь прочитать каждый из датчиков с интервалом в 1,2 секунды., @jsotola