make discretized sin wave, which is stored internal array var. The iterator of which array can go ahead by calling a get function.
DSinGenerator.h
- Committer:
- aktk
- Date:
- 2019-11-27
- Revision:
- 0:6400e338266f
File content as of revision 0:6400e338266f:
/** Defining Discretized Sinusoidal Wave Generator * * \file DSinGenerator.h * \author Akifumi Takahashi * \date 2019/Nov/28 ver.1 publish * \version 1.0.2019.Nov */ #ifndef DISCRETIZED_SINUSOIDAL_WAVE_GENERATOR_H #define DISCRETIZED_SINUSOIDAL_WAVE_GENERATOR_H #define _USE_MATH_DEFINES #include <cmath> #ifndef M_PI #define M_PI 3.141592 #endif #include "mbed.h" /** \Class DISCRETIZED SINUSOIDAL WAVE GENERATOR * * Generate a discretized sinusoidal wave whose value type is float, * and the range is from (-1.0f * ampl) to (1.0f * ampl). * */ class DSinGenerator { private: /// Amplitude of sinusoidal wave (mA) float ampl; /// Frequency of the wave (Hz) uint16_t freq; /// Pulse width fineness of dicretization (us) /// pwth = 1000000 / freq / resolution_ofsin; uint16_t pwth; float* discretized_sin; int32_t* discretized_sin_p16m16; void init(); public: float const ampl_max; uint16_t const freq_max; uint16_t const resolution_ofsin; // = arg_resolution_ofsin below DSinGenerator( uint16_t const arg_resolution_ofsin = 20 ); DSinGenerator( float const arg_ampl, uint16_t const arg_freq, uint16_t const arg_resolution_ofsin = 20 ); void setParam( float const arg_ampl, uint16_t const arg_freq ); void setAmplitude( float const arg_ampl ); void setFrequency( uint16_t const arg_freq ); float getValue(); int32_t getValue_p16m16(); void getValueofSamplePoints(float[]); float getAmplitude(); //inline uint16_t getFrequency(); //inline uint16_t getPulseWidth(); //inline }; inline float DSinGenerator::getAmplitude() { return ampl; } inline uint16_t DSinGenerator::getFrequency() { return freq; } inline uint16_t DSinGenerator::getPulseWidth() { return pwth; } #endif