Определить программно какие датчики подключны
- Войдите на сайт для отправки комментариев
Ср, 23/04/2014 - 18:43
Здравствуйте.
Такой вопрос- код написан к примеру на пять подключенных сенсоров, но реально подключены два. Как программно реализовать самодиагностику и работу только подключенных сенсоров?
Спасибо.
igorcds, пожалуй стоит указать о каких конкретно датчиках идёт речь.
любых, я имею ввиду чтобы не закоментировать неиспользованную часть кода вручную, а чтобы программа сама "слушала" пины и которые имеют какую либо входную информацию только чтобы та часть кода которая завязана на эти пины и работала.
к примеру PIR sensor и сонар Ultrasonic.
Если в коде будет отработка сонара, но сам сонар будет отключен, то в коде, где идет обработка информации по этому Ultrasonic - будет delay, а если 2-3 сонара.....
наверное использовать при запитке к примеру Ultrasonic не vcc пин, а цифровой пин и слушать echo....и если пин echo имеет значение 0 или больше 3500, а вот что дальше сделать? ну поставлю на плюсовой пин LOW, а что с пином echo делать...ехо то все равно ожидает 50мс
внезапная потеря PIR sensorа наверное не влияет на работоспособность системы.
Может немного не в тему...
Наличие подключённого модуля nrf24l01 я определяю так:
1. устанавливаю номер канала (отличный от дефолтного)
2. считываю и сравниваю его
3. совпадает - модуль подключён, иначе нет.
(исплльзую библиотеку RF24).
наверное использовать при запитке к примеру Ultrasonic не vcc пин, а цифровой пин и слушать echo....и если пин echo имеет значение 0 или больше 3500, а вот что дальше сделать? ну поставлю на плюсовой пин LOW, а что с пином echo делать...ехо то все равно ожидает 50мс
внезапная потеря PIR sensorа наверное не влияет на работоспособность системы.
а сонару хватит тока с цифрового пина?
да. действительно не хватит.
Я бы начал решать задачу, с составления таблицы критериев, чтосчитать что датчик подключен
любых
любых не получится. Датчики можно идентифицировать только по косвенным признакам и у многих датчиков косвенные признакми будут совпадать. Да и определение будет не со 100% точностью.
Исключение есть только для цифровых датчиков с однозначной идентификацией, например ds18b20
У i2c можно определить адрес и по нему тип датчика (из ограниченного множества).
Вот только памяти хватит для всех библиотек?
У i2c можно определить адрес и по нему тип датчика (из ограниченного множества).
Вот только памяти хватит для всех библиотек?
адрес можно определить в 1-wire. В i2c адресс определить нельзя (в протоколе нет бродкаста с опросом адресов как в 1-wire), можно только делать перебор адресов в надежде, что на какой-то адрес кто то откликнется
мои 2 копейки
1) определиться с датчиками
2) определить ответы от датчиков (определить критерии)
3) выделить переменную стостояния датчика
4) в старт, проводить инициализацию датчика и проверку на ответ, если ответ получен - переменную состояния датчика в TRUE
5) в коде если TRUE - выполнять цикл, связанный с датчиком
Для i2c есть прога i2cSCANER (фактически перебор).В старте сканируете, если есть ожидаемый ответ - то TRUE.
Если говорить об точности определения аналогово датчика, то смотреть к примеру есть или нет значение от него, понятно что какой именно датчик подключен проверить неполучиться, по будем знать что датчик подключен. А дальше по косвенным признакам определяем исправность \ соответсвие датчика