![](/media/cache/group/ep.webp.50x50_q85.jpg)
Mikrophone Sensor
Dependencies: mbed
Mikrophone Sensor für Geräuscherkennung
Tip: zum Testen Finger auf Mikrophone halten und Abfrage umkehren.
Anwendungen
- Klatschschalter z.B. zum Einschalten des Lichtes
- Überwachung Hund (Bellen)
main.cpp@2:f6a133deaa02, 2015-10-15 (annotated)
- Committer:
- marcel1691
- Date:
- Thu Oct 15 16:20:09 2015 +0000
- Revision:
- 2:f6a133deaa02
- Parent:
- 0:f5b93072ca28
Neu implementiert mit Zeitfenster
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
stefan1691 | 0:f5b93072ca28 | 1 | /** Mikrophone Sensor |
stefan1691 | 0:f5b93072ca28 | 2 | */ |
stefan1691 | 0:f5b93072ca28 | 3 | #include "mbed.h" |
stefan1691 | 0:f5b93072ca28 | 4 | |
stefan1691 | 0:f5b93072ca28 | 5 | // Mikrophone |
stefan1691 | 0:f5b93072ca28 | 6 | AnalogIn mikrophone( A3 ); |
marcel1691 | 2:f6a133deaa02 | 7 | // Zeitfenster wo Mikrophone ausgewertert wird |
marcel1691 | 2:f6a133deaa02 | 8 | int sampleWindow = 1; |
marcel1691 | 2:f6a133deaa02 | 9 | DigitalOut led( D10 ); |
stefan1691 | 0:f5b93072ca28 | 10 | |
stefan1691 | 0:f5b93072ca28 | 11 | int main() |
stefan1691 | 0:f5b93072ca28 | 12 | { |
stefan1691 | 0:f5b93072ca28 | 13 | while(1) |
stefan1691 | 0:f5b93072ca28 | 14 | { |
marcel1691 | 2:f6a133deaa02 | 15 | // Initialisierung: clock() liefert Zeit seit Einschalten oder Reset des Boards |
marcel1691 | 2:f6a133deaa02 | 16 | int startSec = clock() / CLOCKS_PER_SEC; |
marcel1691 | 2:f6a133deaa02 | 17 | float max = 0.0f; |
stefan1691 | 0:f5b93072ca28 | 18 | |
marcel1691 | 2:f6a133deaa02 | 19 | // Zeitfenster um groessten Wert zu finden |
marcel1691 | 2:f6a133deaa02 | 20 | while ( (clock() / CLOCKS_PER_SEC) - startSec < sampleWindow ) |
marcel1691 | 2:f6a133deaa02 | 21 | { |
marcel1691 | 2:f6a133deaa02 | 22 | float m = mikrophone.read(); |
marcel1691 | 2:f6a133deaa02 | 23 | if ( m > max ) |
marcel1691 | 2:f6a133deaa02 | 24 | max = m; |
marcel1691 | 2:f6a133deaa02 | 25 | } |
marcel1691 | 2:f6a133deaa02 | 26 | |
marcel1691 | 2:f6a133deaa02 | 27 | // Auswertung |
marcel1691 | 2:f6a133deaa02 | 28 | printf( "Maximaler Wert %f\n", max ); |
marcel1691 | 2:f6a133deaa02 | 29 | if ( max > 0.4f ) |
marcel1691 | 2:f6a133deaa02 | 30 | led = 1; |
marcel1691 | 2:f6a133deaa02 | 31 | else |
marcel1691 | 2:f6a133deaa02 | 32 | led = 0; |
stefan1691 | 0:f5b93072ca28 | 33 | } |
stefan1691 | 0:f5b93072ca28 | 34 | } |