Цифровой звуковой датчик
У меня возникла проблема с цифровым датчиком звука. Моя цель: хлопнуть 2 раза, и заиграет лид. Итак, я написал этот код. Я не знаю, правильно это или нет. Это происходит: Если я хлопаю, то из последовательного монитора я получаю не один HIGH, а несколько (пробовал менять чувствительность звукового датчика, но это не помогает), но в моем коде есть условия, при которых только Допускается одновременное использование 1 HIGH. Таким образом, я не знаю, неверен ли мой код или мой датчик работает неправильно. Ребята, вы можете мне помочь, пожалуйста? Это мой код:
int soundPin = 13; // Цифровой звуковой контакт
int ledPin = 7;
int claps = 0; // Сколько раз я хлопал в ладоши
int readingState ; // Первое чтение из soundPin
int readingState2 ; // Второе чтение из soundPin
int soundDetectionTime ; // Время после первого хлопка
int soundDetectionTime2 ; // Время после второго хлопка
int timeBetweenSounds = 1000; // Время между звуками, которое я хочу. Там
is an If-statement further on.
void setup(){
pinMode(soundPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
readingState = digitalRead(soundPin); // Первое чтение из
soundPin (digital pin)
Serial.println(readingState);
if (readingState == HIGH){ // Если чтение из
soundPin is HIGH, then start
timing. Also claps value
increased by 1 and the
second reading is happening.
soundDetectionTime = millis();
claps++ ;
readingState2 = digitalRead(soundPin);
if (readingState2 == HIGH){ // Если приведенный выше оператор
true, then this if-statement
is executed. If the second
reading is HIGH,
soundDetectionTime two will
start counting
soundDetectionTime2 = millis(); // Также количество хлопков увеличивается на 1,
so now claps = 2.
claps++;
}
}
if ((soundDetectionTime - soundDetectionTime2) > timeBetweenSounds &&
claps==2){ // Если между
two readings and if I clapped
twice, then LED is HIGH.
digitalWrite(ledPin, HIGH);
}
}
ОБНОВЛЕНИЕ: мне удалось отделить два HIGH друг от друга, и теперь светодиод горит. Таким образом, проблема, должно быть, в том, что датчик выдает мне слишком много HIGH, если я хлопаю один раз, например: 0,0,0,0,1,1,1,0,0. Что вы думаете, ребята?
@jan, 👍1
Обсуждение0
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- Как подключить ардуино к разъему для наушников?
- Как использовать звуковой датчик LM393 + динамик в Arduino
- Отправка цифрового сигнала с одного Arduino на другой для запуска события
- Отправка информации (например, строки) через цифровые контакты
- Распознавание звука
- Отправка цифрового сигнала с одного arduino на другой
- Статус выхода 1 ошибка компиляции для платы arduino/genuino uno при использовании кода тона
Что подключено к звуковому штырю? Можете ли вы предоставить схему? ссылка на датчик?, @esoterik
Это датчик: https://hobbyking.com/en_us/keyes-microphone-sound-detection-sensor-module-for-arduino.html?gclid=CjwKCAjwhLHaBRAGEiwAHCgG3rTULQSiOsXd9Uxke7d5vLY9ZFFI-MktrlDSSUPvsXlvcahoxTs2nBoCKK8QAvD_BwE& gclsrc=aw.ds&___store=en_us Кроме того, схема очень легкий. Я подключил GND и 5В. И цифровой вывод датчика звука к цифровому выводу на Arduino., @jan