СОДЕРЖАНИЕ ►
Рассмотрим аналоговый датчик звука для Ардуино. Расскажем, как подключить датчик звука к микроконтроллеру Arduino, разберем программу для автоматического включения света от хлопка в ладоши и получения показаний датчика звука на последовательном мониторе порта Arduino IDE. Рассмотрим использование в программе тип данных boolean, который часто применяется в языке C++.
Датчик звука (микрофон) для Arduino
Состоит датчик из платы (смотри картинку ниже) на котором смонтированы порты подключения к Arduino Nano, усилитель звука, подстроечный резистор и электронный микрофон, чувствительный к звуку, приходящему во всех направлениях. Регулятором чувствительности (переменным резистором) можно настраивать чувствительность микрофона и выбирать от какого уровня шума будет срабатывать датчик.

Данная плата расширения для Arduino позволяет перевести звуковые колебания в цифровой сигнал. При колебании мембраны в микрофоне от звуковых волн, изменяется емкость его конденсатора, вследствие чего проявляется изменение напряжения на выходах датчика звука, соответствующее звуковому сигналу. Сенсор слева на картинке может отправлять цифровой и аналоговый сигнал.
Как подключить датчик звука к Arduino
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- датчик звука KY-037 (микрофон);
- 1 светодиод и 1 резистор 220 Ом;
- провода «папа-папа» и «папа-мама».
Датчик звука для Ардуино имеет на плате подписанные выходы (обозначение у каждого производителя может отличаться), но проблем с подключением датчика к Ардуино возникнуть не должно. Питание датчика производится от 5V, выход (OUT, S или AO) подключается к любому аналоговому входу на Arduino Uno, а выход DO к Pin 2, если требуется получать цифровой сигнал на Ардуино с датчика микрофона.

Чтобы сделать своими руками светильник, который будет включаться по хлопку в ладоши необходимо собрать электрическую схему из следующих элементов: светодиод с резистором, плата Arduino и датчик звука KY-037 для включения света своими руками. Светодиод можно подключить к любому выходу, в скетче мы использовали Pin 11. После сборки схемы, подключите Ардуино к компьютеру и загрузите скетч.
Скетч для включения света по хлопку
boolean statuslamp; // состояние лампы: true - включено, false - выключено void setup() { pinMode(12,OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output») pinMode(A0,INPUT); // к аналоговому входу A0 подключим датчик (англ. «intput») statuslamp=false; // начальное состояние - лампа выключена Serial.begin(9600); // подключаем монитор порта } void loop() { Serial.println (analogRead(A0)); // выводим значение датчика на монитор if(analogRead(A0)>60) { statuslamp=!statuslamp; // меняем статус лампы при регистрации хлопка digitalWrite(12,statuslamp); // переключаем светодиод на выходе 12 delay(20); // задержка, "дребезга" хлопков } }
Пояснения к коду:
- спецификатор
booleanиспользуется для объявления логических значений (истина/ложь) в языке программирования C++; - в строчке
statuslamp=!statuslamp;мы меняем статус лампы при хлопке; - в строчке
if(analogRead(A0)>60)вместо значения60можно подставить любое значение. Узнайте показания датчика звука KY-037 при хлопке в ладоши на мониторе порта и поставьте свои значения в скетч, при необходимости.










На хлопок реагирует, а телеграф не слышит…
Надо увеличивать чувствительность датчика звука
А какой скетч для реле чтобы оно отрывалась на 10 сек и закрывалось
После нужного события:
1. включаете реле
2. ставите задержку 10 секунд
3. выключаете реле
А можно сделать так чтоб световой индикатор был L (который уже в ардуинке)?
Следует изменить номер порта на 13
А как можно сделать так чтобы серво привод поворачивался при хлопке на 90° а через 30сек. вставал в обратное положение
Самый простой вариант для датчика звука и сервопривода
if (analogRead(A0) > 60) {
servo.write(90);
delay(30000); // задержка на 30 сек
servo.write(0);
}
Нет
Мне кажется, или что-то не верно? Может лучше так?
Спасибо. Исправил ошибку, но немного по-своему. В вашем примере выключение лампы происходило не в условии, а в процедуре loop. То есть лампа бы постоянно сама включалась/выключалась без хлопков.
Здравствуйте, какой будет скетч для Arduino nano с датчиком звука, и еще другие датчики надо подключить
Здравствуйте. Для Arduino Nano скетч и схема подключения датчика звука ничем не отличается.
Здравствуйте, опишите подробнее как и куда подключать светодиод и транзистор?
Подключение транзистора. Вместо мотора ставите светодиод
Здравствуйте! А можно изменить то, на что реагирует датчик? Например, на определённый диапазон частот(40-50 Гц) или на определённый диапазон громкости? И загорался разными диодами? Например, красным на 40-50 Гц, зелёным-на 50-70?
С тем модулем, что на картинке так работать не будет. У него на аналоговом выходе что-то типа опорного напряжения (регулируется потенциометром на плате), с которым сравнивается сигнал с микрофона. При превышении заданного порока на цифровом выходе появляется лог.1
Датчик звука (микрофон) Ардуино измеряет громкость, а не частоту
Вопрос . Модно ли сделать из нескольких датчиков шкалу подсветки что б от более громкого крика загоралось больше шкал а от менее громкого меньше шкал. Что то типа атракциона на крик. При этом шкалы от 1 до 24. Из 24 датчиков можно такое соорудить????
Здравствуйте, а можно сделать так , чтобы по хлопку в ладоши звучала музыка? Дайте скетч с этой мелодией.
#include «pitches.h»
const int SPEAKER=9;
int notes[] = {
NOTE_G7,NOTE_E7,NOTE_D7,NOTE_C7,
NOTE_C7,NOTE_C7,NOTE_C7,
NOTE_D7, NOTE_D7,
NOTE_E7,NOTE_E7,NOTE_E7,
NOTE_G7,NOTE_G7,
NOTE_A7,NOTE_A7,
NOTE_G7,NOTE_E7,NOTE_E7,NOTE_D7,NOTE_G7,
NOTE_C7,NOTE_C7,NOTE_C7,NOTE_E7,NOTE_E7,NOTE_E7,
};
int times[] = {
400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
};
void setup(){
for (int i = 0; i < 27; i++){
tone(SPEAKER, notes[i],times[i]);
delay(times[i]);
noTone(SPEAKER);
}
}
void loop(){}
а как подключить светодиод, я просто ардуино 1 раз взял в руки
Здравствуйте, подскажите пожалуйста как сделать что бы несколько светодиодов загорелось по хлопку, какой нужен скетч ?