Now with Boilerplate and as used in finished DROPSAW project
Lcm101.h@0:116acb03eb85, 2016-08-24 (annotated)
- Committer:
- megrootens
- Date:
- Wed Aug 24 13:08:37 2016 +0000
- Revision:
- 0:116acb03eb85
"Library" for reading force values from LCM101 S-beam force sensor; (i.e. simply reading analog value and offsetting and scaling)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
megrootens | 0:116acb03eb85 | 1 | #ifndef _LCM101_H_ |
megrootens | 0:116acb03eb85 | 2 | #define _LCM101_H_ |
megrootens | 0:116acb03eb85 | 3 | |
megrootens | 0:116acb03eb85 | 4 | #include "mbed.h" |
megrootens | 0:116acb03eb85 | 5 | |
megrootens | 0:116acb03eb85 | 6 | /** |
megrootens | 0:116acb03eb85 | 7 | * Simple class to read out an LCM101 S-beam force sensor connected to an analog |
megrootens | 0:116acb03eb85 | 8 | * input. |
megrootens | 0:116acb03eb85 | 9 | */ |
megrootens | 0:116acb03eb85 | 10 | class Lcm101 { |
megrootens | 0:116acb03eb85 | 11 | public: |
megrootens | 0:116acb03eb85 | 12 | |
megrootens | 0:116acb03eb85 | 13 | /** |
megrootens | 0:116acb03eb85 | 14 | * @param pin_a_in PinName of analog input |
megrootens | 0:116acb03eb85 | 15 | * @param offset of analog value (calibration data) |
megrootens | 0:116acb03eb85 | 16 | * @param factor multiplication factor for analog value (calibration data) |
megrootens | 0:116acb03eb85 | 17 | */ |
megrootens | 0:116acb03eb85 | 18 | Lcm101(PinName pin_a_in, float offset, float factor) : |
megrootens | 0:116acb03eb85 | 19 | analog_in_(pin_a_in), |
megrootens | 0:116acb03eb85 | 20 | kOffset_(offset), |
megrootens | 0:116acb03eb85 | 21 | kFactor_(factor) |
megrootens | 0:116acb03eb85 | 22 | { |
megrootens | 0:116acb03eb85 | 23 | } |
megrootens | 0:116acb03eb85 | 24 | |
megrootens | 0:116acb03eb85 | 25 | /** |
megrootens | 0:116acb03eb85 | 26 | * @return unscaled analog input value |
megrootens | 0:116acb03eb85 | 27 | */ |
megrootens | 0:116acb03eb85 | 28 | float getForceRaw() |
megrootens | 0:116acb03eb85 | 29 | { |
megrootens | 0:116acb03eb85 | 30 | return analog_in_.read(); |
megrootens | 0:116acb03eb85 | 31 | } |
megrootens | 0:116acb03eb85 | 32 | |
megrootens | 0:116acb03eb85 | 33 | /** |
megrootens | 0:116acb03eb85 | 34 | * @return force value kOffset_ + kFactor_ * getForceRaw(); |
megrootens | 0:116acb03eb85 | 35 | */ |
megrootens | 0:116acb03eb85 | 36 | float getForce() |
megrootens | 0:116acb03eb85 | 37 | { |
megrootens | 0:116acb03eb85 | 38 | return kOffset_ + kFactor_ * getForceRaw(); |
megrootens | 0:116acb03eb85 | 39 | } |
megrootens | 0:116acb03eb85 | 40 | |
megrootens | 0:116acb03eb85 | 41 | /** |
megrootens | 0:116acb03eb85 | 42 | * @return ffset of analog value |
megrootens | 0:116acb03eb85 | 43 | */ |
megrootens | 0:116acb03eb85 | 44 | float get_offset() { return kOffset_; } |
megrootens | 0:116acb03eb85 | 45 | |
megrootens | 0:116acb03eb85 | 46 | /** |
megrootens | 0:116acb03eb85 | 47 | * @return factor multiplication factor for analog value |
megrootens | 0:116acb03eb85 | 48 | */ |
megrootens | 0:116acb03eb85 | 49 | float get_factor() { return kFactor_; } |
megrootens | 0:116acb03eb85 | 50 | |
megrootens | 0:116acb03eb85 | 51 | |
megrootens | 0:116acb03eb85 | 52 | private: |
megrootens | 0:116acb03eb85 | 53 | AnalogIn analog_in_; |
megrootens | 0:116acb03eb85 | 54 | |
megrootens | 0:116acb03eb85 | 55 | const float kOffset_; |
megrootens | 0:116acb03eb85 | 56 | const float kFactor_; |
megrootens | 0:116acb03eb85 | 57 | }; |
megrootens | 0:116acb03eb85 | 58 | |
megrootens | 0:116acb03eb85 | 59 | #endif |