Как программно надежно определить наличие 50-ти герц на цифровом входе
- Войдите на сайт для отправки комментариев
Втр, 14/02/2017 - 18:51
Всем доброго дня.
Стоит задача надежно детектривать трёхсекундное дотрагивание пальцем к датчкику. Подключил к ардуино датчик, срабатывающий от дотрагивания до него пальцем. Датчик работает нормально, но на выходе выдаёт не 0/1, а либо 0, либо грязный 50 ти герцовый меандр.
Пробую программно делать так:
void WaitForFinger() { Serial.println("WaitForFinger 0"); while (digitalRead(finger) == LOW) { delay(100); } Serial.println("WaitForFinger 1"); delay(1000); while (digitalRead(finger) == LOW) { delay(100); } Serial.println("WaitForFinger 2"); delay(1000); while (digitalRead(finger) == LOW) { delay(100); } Serial.println("WaitForFinger 3"); }
получается плохо, работает нестабильно, иногда приходится несколько раз дотрагиваться и отпускать датчик, иногда - работает нормально.
Может будут идеи, как лучше такое сделать, спасибо!
Дм Бел. а что за датчик то? Может зашунтировать конденсатором достаточно.
А если после датчика поставить интегрирующую RC цепочку?
Насчет цепочки думал, датчик вот такой:
А что за микросхема?
gena, lm393
Нужно рисовать схему платы, может чего и придумается. Иначе - гадание.
Хочется думать что Вы прикалываетесь.
t=millis();
if(digitalRead(finger)) tf=t;
if(t-tf>100) //по идее и 20 хватит но не хочу
//не нажато
else
//нажато
Переменные пообявлять и знаки препинания сами, сами, сами....
Я ставлю 220, проверено, самое то )))
задача несколько иная :) не просто нажато/отпущено, а нажато в течение нескольких секунд. буду пробовать rc цепь, возможно поможет.
задача несколько иная :) не просто нажато/отпущено, а нажато в течение нескольких секунд
Без разници. Если известно нажата или нет, то остальное - тривиально.
буду пробовать rc цепь, возможно поможет.
Да хоть ЛПД, всеравно до задницы...