LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
SoM / SBC

[PROJEKT] Zapalanie diody LED za pomocą klaśnięcia – czujnik dźwięku Waveshare i Arduino

Najpierw przedstawię prosty program, dzięki któremu można sprawdzić działanie czujnika. Sygnał z wejścia analogowego będzie rysowany jako wykres, co pozwoli na określenie jaka wartość występuje podczas pojedynczego klaśnięcia. Pełen kod tego programu znajduje się w sekcji „do pobrania”.

W programie na platformę Arduino w pierwszej kolejności zadeklarowano zmienne:

int sygnal_analogowy = A0;
int sygnal_cyfrowy = 2;

Następnie w funkcji setup() należy ustawić parametry portu szeregowego oraz pin A0 jako wejście.

void setup() {
  Serial.begin(9600);
  pinMode(sygnal_analogowy, INPUT);
  pinMode(sygnal_cyfrowy, INPUT);
}

W pętli głównej programu do zmiennej wartość należy przypisać wartość odczytaną z pinu A0 (tzn. z czujnika dźwięku). Ta wartość będzie wyświetlana przy pomocy portu szeregowego.

void loop() {
  int wartosc = analogRead(sygnal_analogowy);
  Serial.println(wartosc);
  delay(10);  
}

Należy teraz skompilować oraz wgrać program na płytkę KAmduino UNO. Aby obejrzeć wykres należy otworzyć Kreślarkę dostępną w środowisku Arduino IDE. Aby ją uruchomić wybieramy z górnej belki Narzędzia >> Kreślarka (albo skrót klawiszowy CRTL + SHIFL + L)

W moim przypadku w pomieszczeniu bez zbędnych odgłosów wykres wyglądał następująco:

Wartości mieściły się w zakresie 510-520. Następnie sprawdziłem jakie będą wyniki pomiarów przy ludzkiej mowie:

 

Widać tutaj bardziej nieregularne dźwięki. Następnie sprawdziłem dźwięk alarmu.

Na wykresie powyżej widzimy powtarzające się dźwięki. Na koniec dźwięk klaśnięcia w dłonie.

Widać, że wartość sygnału analogowego z czujnika wzrosła do wartości około 850. Dlatego nasz próg włączania diody LED ustawiony na około 800.

Teraz dopiszę do programu warunek, w którym gdy wartość analogowa czujnika przekroczy daną wartość zostanie zapalona dioda LED. Do deklaracji roli poszczególnych pinów należy ustawić pin 13 jako wyjście. Na płytce KAmduino UNO do tego pinu podłączona jest czerwona dioda LED, która zostanie wykorzystana do sygnalizacji odgłosu klaśnięcia. Po detekcji dioda zapala się na 1 sekundę.

void loop() {
  int wartosc = analogRead(sygnal_analogowy);
  Serial.println(wartosc);
  if (wartosc > 800)  {
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
  }
  delay(10); 
}

Działanie powyższego programu zostało zaprezentowane na poniższym wideo:

 

Autor: Patryk Mądry