MCP4922にADSR波形を出力。

Dependencies:   mbed-rtos mbed

Committer:
ryood
Date:
Wed Jun 15 00:50:14 2016 +0000
Revision:
1:6ebe35be504e
Parent:
0:d78518594116
release???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:d78518594116 1 #ifndef _AVERAGE_ANALOG_H_
ryood 0:d78518594116 2 #define _AVERAGE_ANALOG_H_
ryood 0:d78518594116 3
ryood 0:d78518594116 4 #include "mbed.h"
ryood 0:d78518594116 5
ryood 0:d78518594116 6 class AverageAnalogIn {
ryood 0:d78518594116 7 public:
ryood 0:d78518594116 8 AverageAnalogIn(PinName _pin, int _bufferSize=8) : m_AnalogIn(_pin), bufferSize(_bufferSize), index(0) {
ryood 0:d78518594116 9 buffer = new unsigned short[bufferSize];
ryood 0:d78518594116 10 }
ryood 0:d78518594116 11
ryood 0:d78518594116 12 ~AverageAnalogIn() {
ryood 0:d78518594116 13 delete[] buffer;
ryood 0:d78518594116 14 }
ryood 0:d78518594116 15
ryood 0:d78518594116 16 unsigned short read_u16() {
ryood 0:d78518594116 17 buffer[index] = m_AnalogIn.read_u16();
ryood 0:d78518594116 18 index++;
ryood 0:d78518594116 19 if (index == bufferSize) {
ryood 0:d78518594116 20 index = 0;
ryood 0:d78518594116 21 }
ryood 0:d78518594116 22 unsigned int sum = 0;
ryood 0:d78518594116 23 for (int i = 0; i < bufferSize; i++) {
ryood 0:d78518594116 24 sum += buffer[i];
ryood 0:d78518594116 25 }
ryood 0:d78518594116 26 return sum / bufferSize;
ryood 0:d78518594116 27 }
ryood 0:d78518594116 28
ryood 0:d78518594116 29 float read() {
ryood 0:d78518594116 30 unsigned short value = read_u16();
ryood 0:d78518594116 31 return (float)value * (1.0f / (float)0xFFFF);
ryood 0:d78518594116 32 }
ryood 0:d78518594116 33
ryood 0:d78518594116 34 private:
ryood 0:d78518594116 35 AnalogIn m_AnalogIn;
ryood 0:d78518594116 36 int bufferSize;
ryood 0:d78518594116 37 int index;
ryood 0:d78518594116 38 unsigned short *buffer;
ryood 0:d78518594116 39 };
ryood 0:d78518594116 40
ryood 0:d78518594116 41 #endif //_AVERAGE_ANALOG_H_