Цифровой звуковой датчик

У меня возникла проблема с цифровым датчиком звука. Моя цель: хлопнуть 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. Что вы думаете, ребята?

, 👍1

Обсуждение

Что подключено к звуковому штырю? Можете ли вы предоставить схему? ссылка на датчик?, @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