Звуковые датчики. доклад звуковые датчики. Звуковой датчик на плате Arduino Описание потребности в датчике
Скачать 14.45 Kb.
|
Звуковой датчик на плате Arduino Описание потребности в датчике Датчик предназначен для слежения за уровнем шума или обнаружения громких сигналов: хлопков, стуков или свиста. Принцип действия Датчик представляет собой небольшую плату с установленным на ней микрофоном, микрофонным усилителем, регулятором чувствительности в виде переменного резистора. Микрофон преобразует звуковые колебания в колебания электрического тока. Сигнал с микрофона необходимо усилить с помощью компаратора. Датчик имеет выход с логическим уровнем. Сработал датчик – на выходе появился логический 0. Регулятором чувствительности можно выбирать, от какого звука будет срабатывать датчик - от слабого, громкого или очень громкого звука. Датчик имеет 3 вывода. Назначение выводов следующее: Vcc – питание датчика; GND(от ground) – земля; OUT - цифровой выход; Датчик имеет также светодиод, сигнализирующих о наличие низкого уровня на выходе OUT. Наличие цифрового вывода OUT и светодиода уровня позволяет использовать модуль автономно, без подключения к контроллеру. Специфика Датчик может улавливать звуки различной громкости с помощью регулировки чувствительности микрофона, однако он не показывает конкретного уровня громкости в децибелах, т. е. улавливает конкретно наличие звука Подключение к ардуино #define sensorPin 7 // Переменная для хранения времени, когда произошло последнее событие unsigned long lastEvent = 0; void setup() { // Настраиваем вывод, к которому подключен датчик, как вход pinMode(sensorPin, INPUT); Serial.begin(9600); } void loop() { // Прочитать показания датчика int sensorData = digitalRead(sensorPin); // Если на вывод подан низкий логический уровень, то звук обнаружен if (sensorData == LOW) { // Если прошло 25 мс с момента последнего состояния низкого логического уровня, // это значит, что обнаружен хлопок, а не какие-либо ложные звуки if (millis() - lastEvent > 25) { Serial.println("Clap detected!"); } // Запомнить, когда произошло последнее событие lastEvent = millis(); } } Пример применения датчика для выполнения какой-либо задачи: Включение лампочки по щелчку пальцев. #define sensorPin 7 #define relayPin 8 // Переменная для хранения времени, когда произошло последнее событие unsigned long lastEvent = 0; // Переменная для хранения состояния реле boolean relayState = false; void setup() { pinMode(relayPin, OUTPUT); // Настроить вывод, подключенный к реле, как выход pinMode(sensorPin, INPUT); // Настроить вывод, подключенный к датчику, как вход } void loop() { // Прочитать показания датчика int sensorData = digitalRead(sensorPin); // Если на вывод подан низкий логический уровень, то звук обнаружен if (sensorData == LOW) { // Если прошло 25 мс с момента последнего состояния низкого логического уровня, // это значит, что обнаружен хлопок, а не какие-либо ложные звуки if (millis() - lastEvent > 25) { // изменить переменную состояния реле и установить состояние на выходе relayState = !relayState; digitalWrite(relayPin, relayState ? HIGH : LOW); } // Запомнить, когда произошло последнее событие lastEvent = millis(); } } |