Library 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.
Dependents: MAX9814_LED_Sound_Indicator
MAX9814.cpp
- Committer:
- andcor02
- Date:
- 2014-11-02
- Revision:
- 3:1a773fb0d7e7
- Parent:
- 1:cf181e6a2ead
File content as of revision 3:1a773fb0d7e7:
/* MAX9814.cpp - MAX9814 sensor library Developed by Andrea Corrado */ #include "mbed.h" #include "MAX9814.h" MAX9814::MAX9814(PinName pin): _pin(pin), _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4) { calibration(); } 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::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; } } void MAX9814::volume_indicator() { led_array(_average); sound_level(); }