Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos 4180Final SDFileSystem
microphone.h@8:5cd90280b90f, 2020-04-27 (annotated)
- Committer:
- bfarmer
- Date:
- Mon Apr 27 14:47:49 2020 +0000
- Revision:
- 8:5cd90280b90f
- Parent:
- 1:e14104308237
added star wars music
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
William12 | 0:c5d6f214ba01 | 1 | #include "mbed.h" |
William12 | 1:e14104308237 | 2 | //Adafruit MEMs SPW2430 microphone demo - LEDs display audio level |
William12 | 1:e14104308237 | 3 | BusOut led_strip(p21,p22,p23, p24, p25, p26); |
William12 | 1:e14104308237 | 4 | PwmOut led1(p21); |
William12 | 1:e14104308237 | 5 | PwmOut led2(p22); |
William12 | 1:e14104308237 | 6 | PwmOut led3(p23); |
William12 | 1:e14104308237 | 7 | PwmOut led4(p24); |
William12 | 1:e14104308237 | 8 | PwmOut led5(p25); |
William12 | 1:e14104308237 | 9 | PwmOut led6(p26); |
William12 | 0:c5d6f214ba01 | 10 | |
William12 | 0:c5d6f214ba01 | 11 | class microphone |
William12 | 0:c5d6f214ba01 | 12 | { |
William12 | 0:c5d6f214ba01 | 13 | public : |
William12 | 0:c5d6f214ba01 | 14 | microphone(PinName pin); |
William12 | 0:c5d6f214ba01 | 15 | float read(); |
William12 | 0:c5d6f214ba01 | 16 | operator float (); |
William12 | 0:c5d6f214ba01 | 17 | private : |
William12 | 0:c5d6f214ba01 | 18 | AnalogIn _pin; |
William12 | 0:c5d6f214ba01 | 19 | }; |
William12 | 0:c5d6f214ba01 | 20 | microphone::microphone (PinName pin): |
William12 | 0:c5d6f214ba01 | 21 | _pin(pin) |
William12 | 0:c5d6f214ba01 | 22 | { |
William12 | 0:c5d6f214ba01 | 23 | } |
William12 | 0:c5d6f214ba01 | 24 | float microphone::read() |
William12 | 0:c5d6f214ba01 | 25 | { |
William12 | 0:c5d6f214ba01 | 26 | return _pin.read(); |
William12 | 0:c5d6f214ba01 | 27 | } |
William12 | 0:c5d6f214ba01 | 28 | inline microphone::operator float () |
William12 | 0:c5d6f214ba01 | 29 | { |
William12 | 0:c5d6f214ba01 | 30 | return _pin.read(); |
William12 | 0:c5d6f214ba01 | 31 | } |
William12 | 1:e14104308237 | 32 | |
William12 | 1:e14104308237 | 33 | microphone mymicrophone(p16); |
William12 | 1:e14104308237 | 34 | |
William12 | 1:e14104308237 | 35 | int get_sound() |
William12 | 1:e14104308237 | 36 | { |
William12 | 1:e14104308237 | 37 | //while(1) { |
William12 | 1:e14104308237 | 38 | //read in, subtract 0.67 DC bias, take absolute value, and scale up .1Vpp to 15 for builtin LED display |
William12 | 1:e14104308237 | 39 | int val = int(abs((mymicrophone - (0.67/3.3)))*500.0); |
William12 | 1:e14104308237 | 40 | if(val <= 2.5){ |
William12 | 1:e14104308237 | 41 | led_strip = 0b100000; |
William12 | 1:e14104308237 | 42 | } else if (2.5 > val && val < 5){ |
William12 | 1:e14104308237 | 43 | led_strip = 0b110000; |
William12 | 1:e14104308237 | 44 | } else if (val > 5 && val < 7.5){ |
William12 | 1:e14104308237 | 45 | led_strip = 0b111000; |
William12 | 1:e14104308237 | 46 | } else if (val > 7.5 && val < 10){ |
William12 | 1:e14104308237 | 47 | led_strip = 0b111100; |
William12 | 1:e14104308237 | 48 | } else if (val > 10 && val < 12.5){ |
William12 | 1:e14104308237 | 49 | led_strip = 0b111110; |
William12 | 1:e14104308237 | 50 | } else if (val > 12.5 && val < 15){ |
William12 | 1:e14104308237 | 51 | led_strip = 0b111111; |
William12 | 1:e14104308237 | 52 | } else { |
William12 | 1:e14104308237 | 53 | led_strip = 0; |
William12 | 1:e14104308237 | 54 | } |
William12 | 1:e14104308237 | 55 | wait(0.2); |
William12 | 1:e14104308237 | 56 | //Use an 8kHz audio sample rate (phone quality audio); |
William12 | 1:e14104308237 | 57 | //wait(1.0/8000.0); |
William12 | 1:e14104308237 | 58 | // } |
William12 | 1:e14104308237 | 59 | return val; |
William12 | 1:e14104308237 | 60 | } |