Как программно надежно определить наличие 50-ти герц на цифровом входе

Дм Бел
Offline
Зарегистрирован: 22.11.2016

Всем доброго дня.

Стоит задача надежно детектривать трёхсекундное дотрагивание пальцем к датчкику. Подключил к ардуино датчик, срабатывающий от дотрагивания до него пальцем. Датчик работает нормально, но на выходе выдаёт не 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");
}

получается плохо, работает нестабильно, иногда приходится несколько раз дотрагиваться и отпускать датчик, иногда - работает нормально.

Может будут идеи, как лучше такое сделать, спасибо!

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Дм Бел. а что за датчик то? Может зашунтировать конденсатором достаточно.

gena
Offline
Зарегистрирован: 04.11.2012

  А если после датчика поставить интегрирующую RC цепочку?

Дм Бел
Offline
Зарегистрирован: 22.11.2016

Насчет цепочки думал, датчик вот такой:

gena
Offline
Зарегистрирован: 04.11.2012

А что за микросхема?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

gena, lm393

gena
Offline
Зарегистрирован: 04.11.2012

  Нужно рисовать схему платы, может чего и придумается. Иначе - гадание.

Logik
Offline
Зарегистрирован: 05.08.2014

Хочется думать что Вы прикалываетесь.

 t=millis();

 if(digitalRead(finger)) tf=t;

 if(t-tf>100) //по идее и 20 хватит но не хочу

 //не нажато

 else 

//нажато

 

Переменные пообявлять и знаки препинания сами, сами, сами....

ZIA
ZIA аватар
Offline
Зарегистрирован: 04.02.2017

Я ставлю 220, проверено, самое то )))

Дм Бел
Offline
Зарегистрирован: 22.11.2016

задача несколько иная :) не просто нажато/отпущено, а нажато в течение нескольких секунд. буду пробовать rc цепь, возможно поможет.

Logik
Offline
Зарегистрирован: 05.08.2014

Дм Бел пишет:

задача несколько иная :) не просто нажато/отпущено, а нажато в течение нескольких секунд

Без разници. Если известно нажата или нет, то остальное - тривиально.

Дм Бел пишет:

буду пробовать rc цепь, возможно поможет.

Да хоть ЛПД, всеравно до задницы...