• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czujnik dzwieku ciagle aktywny
#1
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;
  }
}
 
Odpowiedź
#2
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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości