Как запустить зуммер еще на несколько секунд после выключения

Это проект лазерной сигнализации базового уровня. Когда кто-то крестился или держал руки на лазере. зуммер начинает работать, но когда они убирают руку от лазерного света, зуммер останавливается. Но я хочу, чтобы даже после того, как я возьму руки, мой зуммер должен работать в течение нескольких (15-30) секунд ..

, 👍1

Обсуждение

запустите таймер ..., @jsotola

Посмотрите на пример BlinkWithoutDelay и узнайте, как использовать функцию millis () (для нее также есть много учебных пособий в Интернете). Затем запустите зуммер, когда сработает лазерный барьер, установите там метку времени. Когда разница между текущим значением millis() и отметкой времени превышает 15-30 секунд, включите зуммер, @chrisl

@chrisl описывает задержку по отношению к событию start. Вы также можете использовать событие stop (remove hand from "lazer"), чтобы запустить отложенное время. Попробуйте оба и понять разницу, когда вы держите руку там дольше., @DataFiddler

[включить зуммер]; задержка(15000); [выключить зуммер];, @Gerben

**Пожалуйста, не пишите ответы в комментариях.** Это обходит наши показатели качества, поскольку в комментариях отсутствует голосование (как вверх, так и вниз), а также другие проблемы, подробно описанные в мета. Комментарии предназначены для уточнения и улучшения вопроса; пожалуйста, не используйте их в других целях. Существующие ответы в комментариях были удалены. Я заметил, что правильный ответ был дан DragonflyRobotics., @Nick Gammon


1 ответ


1

Если вы используете цифровой зуммер, вы можете сделать:

digitalWrite(buzzerPin,HIGH); 
delay(1000);
digitalWrite(buzzerPin,LOW);
,