for child
Fork of TRP105F_Spline by
TRP105F_Spline.h
- Committer:
- aktk
- Date:
- 2016-06-06
- Revision:
- 9:ec1ee4a6b6a4
- Parent:
- 5:7d4fc0979976
- Child:
- 10:b50e4bb40571
File content as of revision 9:ec1ee4a6b6a4:
/** * TRP105F_Spline.h,.cpp * * Author: aktk, aktk.j.uec@gmail.com * Tokyo, Japan. * * - This library is for providing a distance from TRP105F, photo-reflect proximity sensor, * to whatever reflect the flash. * - Deistance is derived as a voltage signal of TRP105F. * - An object of TRPFS class has an array of sets of * distance(16 bit-value) and voltage(16bit-value) at the distance. * - The range of distances that an array has in sets is [0:255] by 1. * - an array is derived from a cubic spline curve model. * - In order to derive spline curve, some value sets should be got * at the first calibration. * * LOG: * ver.1 2015/10/19 - 2015/10/22 * ver.2 2015/10/22 - * Distance data type has become unsigned short from int. * Distance data range : [2:20] by 1 -> [0:1024] by 1. * ver.2.1 2016/02.12 - 2016/02/16 * Distance data range : [0:1024] -> [0:255]. * ver.3.0 2016/05.23 - */ #ifndef TRP105F_Spline_H #define TRP105F_Spline_H #define DEFALT_AI_PIN p16 #include "mbed.h" // For SPI //int DAread(int channel); // Set of voltage-distance typedef struct { unsigned short x; // distance unsigned short y; // voltage } VDset; // Type of modality to input data for calibration enum UseType { AsDEBUG, AsMODULE } ; // // TRP105FS Class for get distance from voltage // class TRP105FS { public: // Constraction TRP105FS(); TRP105FS(unsigned int); TRP105FS(unsigned int, UseType); TRP105FS(unsigned int, UseType, PinName); //TRP105FS(unsigned int arg_num, DataInType arg_dit, unsigned int channel); // Destraction ~TRP105FS(); // Functions unsigned short getDistance(unsigned short); // alias of getX unsigned short getDistance(); // get voltage from PinName and getX() unsigned short getX(unsigned short); // the fuction to get distance. unsigned short getY(unsigned short); void calibrateSensor(); //void calibrateSensor(VDset* arg_set, unsigned int arg_num); void calibrate(); void setSample(unsigned short,unsigned short); void saveSetting(); void saveSetting(const char *filename); void loadSetting(); void loadSetting(const char *filename); void printOutData(const char *filename); void printThresholds(); private: // // Defining Constants // enum _SetConstant { _LIDX = 0, _RIDX = 255, _ENUM = _RIDX - _LIDX + 1 }; // // Variables // // Debug or Module UseType _useType; // For data sampling and making spline model unsigned int _Sample_Num; // the number of samples for derive spline VDset* _Sample_Set; double* _u_spline; // For comvert voltage -> physical quantity e.g. distance VDset _Set[_ENUM]; unsigned short _Threshold[_ENUM]; //_Threshold[18] is not used virtually. // For get voltage AnalogIn _ai; // // // For calibration // void _sampleData(); void _setSample(unsigned short,unsigned short); void _setSamples(VDset* arg_set, unsigned int arg_num); unsigned short _getSplineYof(double arg_x); void _makeSpline(); // Cubic spline // // For get distance // int _getNearest(int, int, unsigned short); // // For debug // void _printOutData(unsigned short *arg, int num, char* name); void _printOutData(VDset *arg, int num, char* name); void _printOutData(double *arg, int num, char* name); }; #endif