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

Committer:
andcor02
Date:
Sun Nov 02 17:00:16 2014 +0000
Revision:
0:d096ca2ffef0
Made into class system, not into seperate h or c though.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andcor02 0:d096ca2ffef0 1 //#include "mbed.h"
andcor02 0:d096ca2ffef0 2 //#include "Hammer_MicrophoneSensor.h"
andcor02 0:d096ca2ffef0 3 //
andcor02 0:d096ca2ffef0 4 //MAX9814::MAX9814(PinName pin): _pin(pin), _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4) {
andcor02 0:d096ca2ffef0 5 //}
andcor02 0:d096ca2ffef0 6 //
andcor02 0:d096ca2ffef0 7 //
andcor02 0:d096ca2ffef0 8 //void MAX9814::led_array(float x ) {
andcor02 0:d096ca2ffef0 9 //
andcor02 0:d096ca2ffef0 10 // if (_value<x+0.05) {
andcor02 0:d096ca2ffef0 11 // _led1=0;
andcor02 0:d096ca2ffef0 12 // _led2=0;
andcor02 0:d096ca2ffef0 13 // _led3=0;
andcor02 0:d096ca2ffef0 14 // _led4=0;
andcor02 0:d096ca2ffef0 15 // }
andcor02 0:d096ca2ffef0 16 // if (_value>x+0.05&&_value<0.5+x) {
andcor02 0:d096ca2ffef0 17 // _led1=1;
andcor02 0:d096ca2ffef0 18 // _led2=0;
andcor02 0:d096ca2ffef0 19 // _led3=0;
andcor02 0:d096ca2ffef0 20 // _led4=0;
andcor02 0:d096ca2ffef0 21 // }
andcor02 0:d096ca2ffef0 22 // if (_value>0.5+x&&_value<1+x) {
andcor02 0:d096ca2ffef0 23 // _led1=1;
andcor02 0:d096ca2ffef0 24 // _led2=1;
andcor02 0:d096ca2ffef0 25 // _led3=0;
andcor02 0:d096ca2ffef0 26 // _led4=0;
andcor02 0:d096ca2ffef0 27 // }
andcor02 0:d096ca2ffef0 28 // if (_value>1+x&&_value<1.2+x) {
andcor02 0:d096ca2ffef0 29 // _led1=1;
andcor02 0:d096ca2ffef0 30 // _led2=1;
andcor02 0:d096ca2ffef0 31 // _led3=1;
andcor02 0:d096ca2ffef0 32 // _led4=0;
andcor02 0:d096ca2ffef0 33 // }
andcor02 0:d096ca2ffef0 34 // if (_value>1.2+x&&_value<2.8+x) {
andcor02 0:d096ca2ffef0 35 // _led1=1;
andcor02 0:d096ca2ffef0 36 // _led2=1;
andcor02 0:d096ca2ffef0 37 // _led3=1;
andcor02 0:d096ca2ffef0 38 // _led4=1;
andcor02 0:d096ca2ffef0 39 // }
andcor02 0:d096ca2ffef0 40 //}
andcor02 0:d096ca2ffef0 41 //
andcor02 0:d096ca2ffef0 42 //float MAX9814::calibration() {
andcor02 0:d096ca2ffef0 43 //
andcor02 0:d096ca2ffef0 44 // _t.start();
andcor02 0:d096ca2ffef0 45 // _t1.start();
andcor02 0:d096ca2ffef0 46 // float peakToPeak=0, signalMax=0, signalMin=1024;
andcor02 0:d096ca2ffef0 47 //
andcor02 0:d096ca2ffef0 48 // while (_t1.read()<1) {
andcor02 0:d096ca2ffef0 49 // while (_t.read_ms()<50) {
andcor02 0:d096ca2ffef0 50 // _sample=_pin.read();
andcor02 0:d096ca2ffef0 51 //
andcor02 0:d096ca2ffef0 52 // if (_sample<1024) {
andcor02 0:d096ca2ffef0 53 // if (_sample>signalMax)
andcor02 0:d096ca2ffef0 54 // signalMax=_sample;
andcor02 0:d096ca2ffef0 55 //
andcor02 0:d096ca2ffef0 56 // else if (_sample<signalMin)
andcor02 0:d096ca2ffef0 57 // signalMin=_sample;
andcor02 0:d096ca2ffef0 58 // }
andcor02 0:d096ca2ffef0 59 // }
andcor02 0:d096ca2ffef0 60 // _t.reset();
andcor02 0:d096ca2ffef0 61 // peakToPeak=signalMax-signalMin;
andcor02 0:d096ca2ffef0 62 // _value= (peakToPeak*3.3);
andcor02 0:d096ca2ffef0 63 // _value = floor(_value * 100) / 100;
andcor02 0:d096ca2ffef0 64 // _sum+=_value;
andcor02 0:d096ca2ffef0 65 // _count++;
andcor02 0:d096ca2ffef0 66 // }
andcor02 0:d096ca2ffef0 67 // _average=_sum/_count;
andcor02 0:d096ca2ffef0 68 // _t1.reset();
andcor02 0:d096ca2ffef0 69 //
andcor02 0:d096ca2ffef0 70 // return _average;
andcor02 0:d096ca2ffef0 71 //}
andcor02 0:d096ca2ffef0 72 //
andcor02 0:d096ca2ffef0 73 //float MAX9814::sound_level() {
andcor02 0:d096ca2ffef0 74 //
andcor02 0:d096ca2ffef0 75 // _t.start();
andcor02 0:d096ca2ffef0 76 // float peakToPeak=0, signalMax=0, signalMin=1024;
andcor02 0:d096ca2ffef0 77 //
andcor02 0:d096ca2ffef0 78 // while (_t.read_ms()<50) {
andcor02 0:d096ca2ffef0 79 // _sample=_pin.read();
andcor02 0:d096ca2ffef0 80 //
andcor02 0:d096ca2ffef0 81 // if (_sample<1024) {
andcor02 0:d096ca2ffef0 82 // if (_sample>signalMax)
andcor02 0:d096ca2ffef0 83 // signalMax=_sample;
andcor02 0:d096ca2ffef0 84 //
andcor02 0:d096ca2ffef0 85 // else if (_sample<signalMin)
andcor02 0:d096ca2ffef0 86 // signalMin=_sample;
andcor02 0:d096ca2ffef0 87 // }
andcor02 0:d096ca2ffef0 88 // }
andcor02 0:d096ca2ffef0 89 // _t.reset();
andcor02 0:d096ca2ffef0 90 // peakToPeak=signalMax-signalMin;
andcor02 0:d096ca2ffef0 91 // _value= (peakToPeak*3.3);
andcor02 0:d096ca2ffef0 92 // _value = floor(_value * 100) / 100;
andcor02 0:d096ca2ffef0 93 // _sum+=_value;
andcor02 0:d096ca2ffef0 94 // _count++;
andcor02 0:d096ca2ffef0 95 //
andcor02 0:d096ca2ffef0 96 // return _value;
andcor02 0:d096ca2ffef0 97 //}
andcor02 0:d096ca2ffef0 98 //
andcor02 0:d096ca2ffef0 99 //
andcor02 0:d096ca2ffef0 100 //void MAX9814::volume_indicator() {
andcor02 0:d096ca2ffef0 101 // led_array(_average);
andcor02 0:d096ca2ffef0 102 // sound_level();
andcor02 0:d096ca2ffef0 103 //}