Ryo Od
/
Nucleo_MCP4922_DCA_Test
MCP4922にADSR波形を出力。
Diff: AverageAnalogIn.h
- Revision:
- 0:d78518594116
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AverageAnalogIn.h Tue Jun 14 22:37:17 2016 +0000 @@ -0,0 +1,41 @@ +#ifndef _AVERAGE_ANALOG_H_ +#define _AVERAGE_ANALOG_H_ + +#include "mbed.h" + +class AverageAnalogIn { +public: + AverageAnalogIn(PinName _pin, int _bufferSize=8) : m_AnalogIn(_pin), bufferSize(_bufferSize), index(0) { + buffer = new unsigned short[bufferSize]; + } + + ~AverageAnalogIn() { + delete[] buffer; + } + + unsigned short read_u16() { + buffer[index] = m_AnalogIn.read_u16(); + index++; + if (index == bufferSize) { + index = 0; + } + unsigned int sum = 0; + for (int i = 0; i < bufferSize; i++) { + sum += buffer[i]; + } + return sum / bufferSize; + } + + float read() { + unsigned short value = read_u16(); + return (float)value * (1.0f / (float)0xFFFF); + } + +private: + AnalogIn m_AnalogIn; + int bufferSize; + int index; + unsigned short *buffer; +}; + +#endif //_AVERAGE_ANALOG_H_ \ No newline at end of file