Проверка показаний (прошу помощи).
- Войдите на сайт для отправки комментариев
Пнд, 14/12/2015 - 14:47
Всем привет, проблемма в следующем, если данные с датчика приходят более 33 загорается светодиод, опрос идёт каждые 200ms но иногда прилетают левые данные например 33,4,33. Хотелось бы проверку чтоб выполнял действие если только данные более 33 приходят 5раз подряд. Направьте примером ). Спасибо
if (temp_c>33)
{
digitalWrite(ledPin, 1);
}
else
{
digitalWrite(ledPin, 0);
}
А что у Вас за датчик такой? И как он подсоединен?
Заведите счетчик, который будет увеличиваться на 1, если значение температуры превышает 33 и иначе сбрасываться в 0. Как только счетчик достигнет значения 5 значит вы получили, что хотели.
Опрос температурного датчика 5 раз в секунду? Хм... Случаем не ds18b20 используете?
temp_c - я правильно понял - температура?
Но правильней было бы воспользоваться медианным фильтром, чтобы отсеять левые данные. А то вдруг у вас помеха будет приходить через каждые 4 значения? В таком случае 5 подряд не дождетесь.
Вот как пример: http://chipenable.ru/index.php/embedded-programming/item/203-mediannyy-f...
датчик именно ds18b20, статистика показалла что где то 1-2 раза в 10 сек. сбой как добавить этот счетчик? был бы очень благодарен за пример. Спасибо.
egg, нужно лечить болезнь, а не симптомы. Разбирайтесь почему выдаёт левые значения.
И не долбите его каждые 200мС. А за что dimax минуснули, чудны дела твои хосподи)))).
Проверьте все контакты, резистор и отсутствие колайдеров в непосредственной близости. Работают они весьма стабильно.
Всем Спасибо, счетчик то что надо! все работает.
Всем Спасибо, счетчик то что надо! все работает.
Так что за датчик-то? Не многие датчики могут отдавать точную температуру так часто...
1. Часто- вредно. Они ещё и подогреваются от частых опросов.
2. Проверяйте CRC.