Moving Average of MCP3008 (8ch ADC)
AverageMCP3008.h
- Committer:
- ryood
- Date:
- 2017-10-12
- Revision:
- 0:211b1b1254b3
- Child:
- 1:8077de8afeb8
File content as of revision 0:211b1b1254b3:
#ifndef _AVERAGE_MCP3008_H_ #define _AVERAGE_MCP3008_H_ #include "mbed.h" #include "mcp3008.h" class AverageMCP3008 { public: AverageMCP3008(MCP3008* _m_p_mcp3008, int _bufferSize=8) : m_p_mcp3008(_m_p_mcp3008), bufferSize(_bufferSize), index(0) { buffer = new unsigned short[bufferSize]; } ~AverageMCP3008() { delete[] buffer; } unsigned short read_input_u16(int channel) { buffer[index] = m_p_mcp3008->read_input_u16(channel); 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_input(int channel) { unsigned short value = read_input_u16(channel); return (float)value * (1.0f / (float)0xFFFF); } private: MCP3008* m_p_mcp3008; int bufferSize; int index; unsigned short *buffer; }; #endif //_AVERAGE_MCP3008_H_