Program to control Electret Microphone Amplifier - MAX9814 from adafruit. Allows: To sample analogue voltage to transform into rough sound level. Transfer sound level to visual indicator, volume bar such as 4 LEDs on LPC11U24.
Dependencies: MAX9814_Electret_Microphone_LED_Volume_Indicator mbed
Revision 1:380e6ab41172, committed 2014-11-02
- Comitter:
- andcor02
- Date:
- Sun Nov 02 17:12:22 2014 +0000
- Parent:
- 0:d096ca2ffef0
- Child:
- 2:204df97fe23a
- Commit message:
- Intergrated Into h. cpp. files
Changed in this revision
--- a/Hammer_MicrophoneSensor.c Sun Nov 02 17:00:16 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-//#include "mbed.h"
-//#include "Hammer_MicrophoneSensor.h"
-//
-//MAX9814::MAX9814(PinName pin): _pin(pin), _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4) {
-//}
-//
-//
-//void MAX9814::led_array(float x ) {
-//
-// if (_value<x+0.05) {
-// _led1=0;
-// _led2=0;
-// _led3=0;
-// _led4=0;
-// }
-// if (_value>x+0.05&&_value<0.5+x) {
-// _led1=1;
-// _led2=0;
-// _led3=0;
-// _led4=0;
-// }
-// if (_value>0.5+x&&_value<1+x) {
-// _led1=1;
-// _led2=1;
-// _led3=0;
-// _led4=0;
-// }
-// if (_value>1+x&&_value<1.2+x) {
-// _led1=1;
-// _led2=1;
-// _led3=1;
-// _led4=0;
-// }
-// if (_value>1.2+x&&_value<2.8+x) {
-// _led1=1;
-// _led2=1;
-// _led3=1;
-// _led4=1;
-// }
-//}
-//
-//float MAX9814::calibration() {
-//
-// _t.start();
-// _t1.start();
-// float peakToPeak=0, signalMax=0, signalMin=1024;
-//
-// while (_t1.read()<1) {
-// while (_t.read_ms()<50) {
-// _sample=_pin.read();
-//
-// if (_sample<1024) {
-// if (_sample>signalMax)
-// signalMax=_sample;
-//
-// else if (_sample<signalMin)
-// signalMin=_sample;
-// }
-// }
-// _t.reset();
-// peakToPeak=signalMax-signalMin;
-// _value= (peakToPeak*3.3);
-// _value = floor(_value * 100) / 100;
-// _sum+=_value;
-// _count++;
-// }
-// _average=_sum/_count;
-// _t1.reset();
-//
-// return _average;
-//}
-//
-//float MAX9814::sound_level() {
-//
-// _t.start();
-// float peakToPeak=0, signalMax=0, signalMin=1024;
-//
-// while (_t.read_ms()<50) {
-// _sample=_pin.read();
-//
-// if (_sample<1024) {
-// if (_sample>signalMax)
-// signalMax=_sample;
-//
-// else if (_sample<signalMin)
-// signalMin=_sample;
-// }
-// }
-// _t.reset();
-// peakToPeak=signalMax-signalMin;
-// _value= (peakToPeak*3.3);
-// _value = floor(_value * 100) / 100;
-// _sum+=_value;
-// _count++;
-//
-// return _value;
-//}
-//
-//
-//void MAX9814::volume_indicator() {
-// led_array(_average);
-// sound_level();
-//}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Hammer_MicrophoneSensor.cpp Sun Nov 02 17:12:22 2014 +0000
@@ -0,0 +1,104 @@
+#include "mbed.h"
+#include "Hammer_MicrophoneSensor.h"
+
+MAX9814::MAX9814(PinName pin): _pin(pin), _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4) {
+ calibration();
+}
+
+
+void MAX9814::led_array(float x ) {
+
+ if (_value<x+0.05) {
+ _led1=0;
+ _led2=0;
+ _led3=0;
+ _led4=0;
+ }
+ if (_value>x+0.05&&_value<0.5+x) {
+ _led1=1;
+ _led2=0;
+ _led3=0;
+ _led4=0;
+ }
+ if (_value>0.5+x&&_value<1+x) {
+ _led1=1;
+ _led2=1;
+ _led3=0;
+ _led4=0;
+ }
+ if (_value>1+x&&_value<1.2+x) {
+ _led1=1;
+ _led2=1;
+ _led3=1;
+ _led4=0;
+ }
+ if (_value>1.2+x&&_value<2.8+x) {
+ _led1=1;
+ _led2=1;
+ _led3=1;
+ _led4=1;
+ }
+}
+
+float MAX9814::calibration() {
+
+ _t.start();
+ _t1.start();
+ float peakToPeak=0, signalMax=0, signalMin=1024;
+
+ while (_t1.read()<1) {
+ while (_t.read_ms()<50) {
+ _sample=_pin.read();
+
+ if (_sample<1024) {
+ if (_sample>signalMax)
+ signalMax=_sample;
+
+ else if (_sample<signalMin)
+ signalMin=_sample;
+ }
+ }
+ _t.reset();
+ peakToPeak=signalMax-signalMin;
+ _value= (peakToPeak*3.3);
+ _value = floor(_value * 100) / 100;
+ _sum+=_value;
+ _count++;
+ }
+ _average=_sum/_count;
+ _t1.reset();
+
+ return _average;
+}
+
+float MAX9814::sound_level() {
+
+ _t.start();
+ float peakToPeak=0, signalMax=0, signalMin=1024;
+
+ while (_t.read_ms()<50) {
+ _sample=_pin.read();
+
+ if (_sample<1024) {
+ if (_sample>signalMax)
+ signalMax=_sample;
+
+ else if (_sample<signalMin)
+ signalMin=_sample;
+ }
+ }
+ _t.reset();
+ peakToPeak=signalMax-signalMin;
+ _value= (peakToPeak*3.3);
+ _value = floor(_value * 100) / 100;
+ _sum+=_value;
+ _count++;
+
+ return _value;
+}
+
+
+void MAX9814::volume_indicator() {
+ led_array(_average);
+ sound_level();
+}
--- a/Hammer_MicrophoneSensor.h Sun Nov 02 17:00:16 2014 +0000
+++ b/Hammer_MicrophoneSensor.h Sun Nov 02 17:12:22 2014 +0000
@@ -1,27 +1,29 @@
-//#ifndef MBED_MIC_H
-//#define MBED_MIC_H
-//
-//#include "mbed.h"
-//
-//class MAX9814 {
-//
-//public:
-//
-// MAX9814(PinName pin);
-//
-// void led_array(float x);
-//
-// float calibration();
-//
-// float sound_level();
-//
-//protected:
-// AnalogIn _pin;
-// BusOut _led1, _led2, _led3, _led4;
-// float _value,_sum,_average;
-// int _count;
-// float _sample;
-// Timer _t,_t1;
-//};
-//
-//#endif
\ No newline at end of file
+#ifndef MBED_MIC_H
+#define MBED_MIC_H
+
+#include "mbed.h"
+
+class MAX9814 {
+
+public:
+
+ MAX9814(PinName pin);
+
+ void led_array(float x);
+
+ void volume_indicator();
+
+ float calibration();
+
+ float sound_level();
+
+protected:
+ AnalogIn _pin;
+ BusOut _led1, _led2, _led3, _led4;
+ float _value,_sum,_average;
+ int _count;
+ float _sample;
+ Timer _t,_t1;
+};
+
+#endif
\ No newline at end of file
--- a/main.cpp Sun Nov 02 17:00:16 2014 +0000
+++ b/main.cpp Sun Nov 02 17:12:22 2014 +0000
@@ -1,136 +1,14 @@
#include "mbed.h"
-//#include "Hammer_MicrophoneSensor.h"
+#include "Hammer_MicrophoneSensor.h"
Serial pc (USBTX, USBRX);
-
-
-class MAX9814 {
-
-public:
-
- MAX9814(PinName pin): _pin(pin), _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4) {
- }
-
-
-void led_array(float x ) {
-
- if (_value<x+0.05) {
- _led1=0;
- _led2=0;
- _led3=0;
- _led4=0;
- }
- if (_value>x+0.05&&_value<0.5+x) {
- _led1=1;
- _led2=0;
- _led3=0;
- _led4=0;
- }
- if (_value>0.5+x&&_value<1+x) {
- _led1=1;
- _led2=1;
- _led3=0;
- _led4=0;
- }
- if (_value>1+x&&_value<1.2+x) {
- _led1=1;
- _led2=1;
- _led3=1;
- _led4=0;
- }
- if (_value>1.2+x&&_value<2.8+x) {
- _led1=1;
- _led2=1;
- _led3=1;
- _led4=1;
- }
-}
-
-float calibration() {
-
- _t.start();
- _t1.start();
- float peakToPeak=0, signalMax=0, signalMin=1024;
-
- while (_t1.read()<1) {
- while (_t.read_ms()<50) {
- _sample=_pin.read();
-
- if (_sample<1024) {
- if (_sample>signalMax)
- signalMax=_sample;
-
- else if (_sample<signalMin)
- signalMin=_sample;
- }
- }
- _t.reset();
- peakToPeak=signalMax-signalMin;
- _value= (peakToPeak*3.3);
- _value = floor(_value * 100) / 100;
- _sum+=_value;
- _count++;
- }
- _average=_sum/_count;
- _t1.reset();
-
- return _average;
-}
-
-float sound_level() {
-
- _t.start();
- float peakToPeak=0, signalMax=0, signalMin=1024;
-
- while (_t.read_ms()<50) {
- _sample=_pin.read();
-
- if (_sample<1024) {
- if (_sample>signalMax)
- signalMax=_sample;
-
- else if (_sample<signalMin)
- signalMin=_sample;
- }
- }
- _t.reset();
- peakToPeak=signalMax-signalMin;
- _value= (peakToPeak*3.3);
- _value = floor(_value * 100) / 100;
- _sum+=_value;
- _count++;
-
- return _value;
-}
-
-
-void volume_indicator() {
- led_array(_average);
- sound_level();
-}
-
-protected:
- AnalogIn _pin;
- BusOut _led1, _led2, _led3, _led4;
- float _value,_sum,_average;
- int _count;
- float _sample;
- Timer _t,_t1;
-
-};
-
-
-
-
MAX9814 mic(p20);
int main()
{
- mic.calibration();
while (1) {
mic.volume_indicator();
- mic.sound_level();
pc.printf("\n\r Level is %f", mic.sound_level());
}
}
\ No newline at end of file
Andrea Corrado
Electret Microphone Amplifier - MAX9814