Skip to content

Commit ac20343

Browse files
authored
Merge branch 'main' into fix/cd-token
2 parents a3e7c26 + 52673da commit ac20343

File tree

3 files changed

+69
-1
lines changed

3 files changed

+69
-1
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
3+
title: Sound Sensor
4+
tags: ["gpio"]
5+
--------------
6+
7+
## Funktionsweise
8+
9+
Ein Sound Sensor funktioniert mittels eines Mikrofons. Die vom Mikrofon in elektrische Signale umgewandelten akustischen Schwingungen werden
10+
gegen einen Schwellenwert verglichen. Sobald die elektrischen Signale in ihrer Stärke einen gewissen Schwellwert übersteigen wird am Sensor
11+
ein digitaler Ausgang geschaltet. Es wurde Lärm oder ein Geräusch erkannt.
12+
13+
Am CrowPi kann dieser Schwellwert mittels eines Potentiometers eingestellt werden. Am einfachsten geht das, wenn man auf das entsprechende
14+
LED bei den Status LEDS achtet und den entsprechenden Lärm verursacht welcher erkannt werden soll. Wird das Potentiometer nach rechts
15+
gedreht muss das entsprechende akustische Signal lauter sein, um vom Sensor erkannt zu werden. Auf die linke Seite gedreht am Potentiometer
16+
macht den Sensor viel empfindlicher gegenüber leisen Geräuschen. Zu finden ist das Potentiometer wie auf diesem Bild gezeigt: {{< img
17+
alt="Potentiometer des Sound Sensor" src="components/sound-sensor-potentiometer.jpg" >}}
18+
19+
## Voraussetzungen
20+
21+
### DIP Switches
22+
23+
Für diese Komponente werden keine spezifischen DIP-Switches benötigt, so dass diese in der Standardkonfiguration belassen werden können:
24+
25+
{{< dip-switches >}}
26+
27+
## Verwendung
28+
29+
Nachfolgend wird die Verwendung der Klasse {{< javadoc class="com.pi4j.crowpi.components.SoundSensorComponent" >}} beschrieben.
30+
31+
### Konstruktoren
32+
33+
| Konstruktor | Bemerkung |
34+
|:----------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------|
35+
| `SoundSensorComponent(com.pi4j.context.Context pi4j)` | Initialisiert einen Sound Sensor mit dem Standard-Pin für den CrowPi. |
36+
| `SoundSensorComponent(com.pi4j.context.Context pi4j, int address, long debounce)` | Initialisiert einen Sound Sensor mit einem benutzerdefinierten Pin. Zusätzlich kann mit `debounce` noch eine Entprellzeit in Mikrosekunden angegeben werden |
37+
38+
### Methoden
39+
40+
| Methode | Bemerkung |
41+
|:---------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------|
42+
| `boolean isNoisy()` | Gibt true zurück, wenn aktuell ein Geräusch vom Sensor erkannt wird |
43+
| `boolean isSilent()` | Gibt true zurück, wenn aktuell stille herrscht. |
44+
| `SoundState getState()` | Gibt den aktuellen Zustand des Sensors in Form des SoundState zurück. |
45+
| `void onNoise(SimpleEventHandler handler)` | Setzt den Event Handler, welcher bei auftretendem Lärm am Sensor aufgerufen werden soll. null deaktiviert diesen Event Listener. |
46+
| `void onSilence(SimpleEventHandler handler)` | Setzt den Event Handler, welcher bei verschwundenem Lärm am Sensor aufgerufen werden soll. null deaktiviert diesen Event Listener. |
47+
48+
### Enumerationen
49+
50+
- {{< javadoc class="com.pi4j.crowpi.components.SoundSensorComponent" subclass="SoundState" >}} enthält alle möglichen Zustände welche vom
51+
Sound Sensor zurückgegeben werden können.
52+
53+
## Beispielapplikation
54+
55+
Bei dieser Komponente wurde ein sehr simples Beispiel gewählt. Damit die Applikation jedoch richtig funktioniert muss erst der Sound Sensor
56+
so eingestellt werden, dass ein Händeklatschen erkannt wird. Am besten wie in der Funktionsweise beschrieben kurz ausprobieren. Als erstes
57+
wird mit einer simplen Statusabfrage geprüft, ob gerade stille im Raum herrscht. Falls es gerade schon zu laut wäre, würde das Programm
58+
abbrechen. Ist es ruhig registriert das Programm einen `onNoise` Event Handler, welcher mittels einer Zählvariable zählt wie oft schon Lärm
59+
erkannt wurde. Nach 3x Händeklatschen beendet die Applikation wieder. Für das Zählen in einer Lambdafunktion in Java muss ein spezieller
60+
Datentyp verwendet werden. Man sieht dies am `AtomicInteger count`. Der `AtomicInteger` ist eine spezielle Form eines normalen Integers,
61+
welcher jedoch auch innerhalb einer Lambdafunktion benutzt werden kann.{{< code
62+
file="src/main/java/com/pi4j/crowpi/applications/SoundSensorApp.java" language="java" >}}
63+
64+
## Weitere Möglichkeiten
65+
66+
- Mit der Relaiskomponente kombiniert könnte eine Lampe mittels klatschen ein und ausgeschaltet werden.
67+
- Es könnte eine Alarmanlage gebaut werden, welche anhand von Lärm einen Eindringling erkennt.
68+
2.04 MB
Loading

0 commit comments

Comments
 (0)