Arduino Polska Forum

Pełna wersja: Czujnik dzwieku ciagle aktywny
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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;
  }
}
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.