Пропингуйте датчик для проверки ошибок
Можно ли пропинговать датчик, например DHT22 или 18B20, для проверки связи. Я хочу выполнить проверку ошибок в void setup()
и убедиться, что все датчики подключены правильно.
@lineman2208, 👍0
2 ответа
Не существует единого ответа для всех датчиков. Некоторые могут осуществлять самопроверку; в противном случае оператор может предоставить конкретную среду при запуске, которую будет проверять функция setup(). В противном случае все, что вы можете сделать, это проверить работоспособность выходных данных.
DS18b20 - однопроводной цифровой термометр Dallas/Maxim, например, имеет определенное значение сразу после сброса; вы можете проверить это, прежде чем давать команду на измерение. Или просто возьмите образец и убедитесь, что он «имеет смысл». Доступные конкретные тесты зависят от того, что реализует данный датчик.
На этот вопрос нет простого ответа «да» или «нет».
Вам необходимо проверить таблицы данных и библиотеки для выбранных вами устройств и посмотреть, что доступно. Во многих библиотеках есть функция begin()
, которая может или не может возвращать информацию о том, работает ли устройство.
Многие могут просто зависнуть в ожидании связи, и с этим мало что можно сделать, кроме как перепрограммировать библиотеку, чтобы она работала по-другому.
Некоторые (особенно аналоговые датчики) возвращают значения своих функций считывания, которые выходят далеко за пределы допустимого диапазона, что, как можно предположить, указывает на неисправность.
Для датчиков на базе I2C вы можете использовать вариант скетча I2CScanner, чтобы посмотреть, какие адреса используются, прежде чем пытаться использовать сами датчики.
Другие протоколы могут иметь аналогичную систему, которую можно использовать для проверки того, что находится на шине.
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Проблема с датчиком температуры и влажности DHT11
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Проблемы с подключением I2C на ESP8266 — 12F, какие контакты использовать?
- DHT11 возвращает неверные значения
- BMP280 возвращает 0
- Как заставить инфракрасный термодатчик MEMS - D6T-44-L06 работать с Arduino?
- Считывание температуры (DS18B20) с помощью ATtiny85