Arduino Polska Forum
Czujnik dzwieku ciagle aktywny - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w)
+--- Wątek: Czujnik dzwieku ciagle aktywny (/watek-czujnik-dzwieku-ciagle-aktywny)



Czujnik dzwieku ciagle aktywny - maciekwo - 26-12-2018

Witam jestem całkowicie nowy tutaj, zrobilem według poradnikow modul ktory po klasnieciu mial zapalać pasek led.
Na poczatku zanim jeszcze wszystko do końca podłączyłem widac byłuo ze czujnik dzwieku reagowałem na kazdy odgłos (zapalała sie czerwona dioda). Jak juz wszystko podłączyłem to ta dioda ciagle sie swieci, a pasek led jest ciagle zapalony i nie reaguje na zedne odgłosy.

Kod:

int soundSensor = 3;
int relay = 4;
int claps = 0;
long detectionSpanInitial = 0;
long detectionSpan = 0;
boolean lightState = false;
 
void setup() {
  pinMode(soundSensor, INPUT);
  pinMode(relay, OUTPUT);
}
 
void loop() {
 
  int sensorState = digitalRead(soundSensor);
 
  if (sensorState == 0)
  {
    if (claps == 0)
    {
      detectionSpanInitial = detectionSpan = millis();
      claps++;
    }
    else if (claps > 0 && millis()-detectionSpan >= 50)
    {
      detectionSpan = millis();
      claps++;
    }
  }
 
  if (millis()-detectionSpanInitial >= 400)
  {
    if (claps == 2)
    {
      if (!lightState)
        {
          lightState = true;
          digitalWrite(relay, HIGH);
        }
        else if (lightState)
        {
          lightState = false;
          digitalWrite(relay, LOW);
        }
    }
    claps = 0;
  }
}


RE: Czujnik dzwieku ciagle aktywny - kaczakat - 27-12-2018

Spróbuj zamienić if (claps == 2) na if (claps>= 2), tak samo jak z millisami nie musisz trafiać w warunek dokładnej równości, a z tymi czasami może się tak zdarzyć że zarejestruje więcej klaśnięć niż upłynie w warunku przy>=400 i już klapsów nigdy nie wyzeruje.