Я хочу выключать светодиод только тогда, когда вход низкий в течение длительного периода времени, а не когда в звуковом сигнале есть взлеты и падения

Мой проект - обнаружение детского плача, когда ребенок плачет, светодиод должен включаться, а когда он останавливается, он должен выключаться, но я хочу, чтобы он выключался только тогда, когда ребенок перестал плакать, а не когда есть взлеты и падения в звуке. При высоком уровне детского звука загорается светодиод, а при низком — гаснет. Я хочу, чтобы светодиод оставался включенным и выключал его только тогда, когда ребенок полностью перестанет плакать. Если входной сигнал от звукового датчика остается низким в течение длительного периода времени, светодиод должен погаснуть, как мне написать код для этого условия?

, 👍0

Обсуждение

посмотрите пример скетча blinkWithoutDelay... подумайте о том, если обнаружен крик, то предыдущаяMillis = currentMillis, @jsotola

вопрос кажется мне ясным и в рамках, не уверен, почему он был закрыт, @haresfur

Какой датчик звука вы используете? Какой у него выходной сигнал? Цифровой? Аналог? Пожалуйста, покажите нам скетч, который вы уже написали. Не могли бы вы рассказать нам, что такое «длительный период времени»? Это одна минута, 5 минут, один час?, @VE7JRO

Ваш вопрос действительно неясен. Где именно ваша проблема в написании условия? Пожалуйста, покажите нам код, который у вас уже есть, так как реальная реализация условия сильно зависит от остальной части вашего кода., @chrisl


1 ответ


1

Это очень связано с алгоритмом устранения дребезга (используется для устранения дребезга переключателей/клавиш), но расценивайте "дребезг" кнопки как крик. Время намного больше (от секунд до даже минут).

Посмотрите здесь объяснение устранения отказов:

https://www.arduino.cc/en/tutorial/debounce

  • Как только ребенок начнет плакать, вы хотите, чтобы светодиод (почти) немедленно включился, поэтому используйте короткое время "отключения дребезга" (или в данном случае: включение плача) для нарастания фронта (начала плача), что-то в мс или секунду, может быть (я предполагаю, что это критично по времени).
  • Однако для обнаружения прекращения плача вам, вероятно, потребуется гораздо больше времени, может быть, даже минута (но я оставляю точное время на ваше усмотрение).
,

@jsotola ... Я думаю, что это устранение дребезга, но не устранение дребезга кнопки, а устранение дребезга «плака», где время «устранения дребезга» может составлять даже секунды или минуты (по крайней мере, когда останавливается, чтобы поплакать). Но я должен изменить свой ответ, чтобы удалить BlinkWithoutDelay, я думаю, потому что это больше «противодребезговые» (слишком короткие) крики (или в основном останавливающие крики)., @Michel Keijzers

теперь, когда я думаю об этом, вы правы насчет разоблачения, @jsotola

@jsotola Спасибо ... только есть другое время спада и нарастания «отклонения»., @Michel Keijzers