Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of priustroller_2 by
sensors/sensors.h@28:af9d43bcb371, 2015-03-14 (annotated)
- Committer:
- bwang
- Date:
- Sat Mar 14 19:18:34 2015 +0000
- Revision:
- 28:af9d43bcb371
- Parent:
- 11:dccbaa9274c5
- Child:
- 29:cb03760ba9ea
[NONWORKING] Switched sensors to delay-based NativeAnalogIn class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bwang | 1:1f58bdcf2956 | 1 | #ifndef __SENSORS_H |
bwang | 1:1f58bdcf2956 | 2 | #define __SENSORS_H |
bwang | 1:1f58bdcf2956 | 3 | |
bwang | 1:1f58bdcf2956 | 4 | #include "includes.h" |
bwang | 1:1f58bdcf2956 | 5 | |
bwang | 28:af9d43bcb371 | 6 | class NativeAnalogIn { |
bwang | 28:af9d43bcb371 | 7 | public: |
bwang | 28:af9d43bcb371 | 8 | NativeAnalogIn(PinName pin); |
bwang | 28:af9d43bcb371 | 9 | float Read(); |
bwang | 28:af9d43bcb371 | 10 | operator float() {return Read();} |
bwang | 28:af9d43bcb371 | 11 | private: |
bwang | 28:af9d43bcb371 | 12 | unsigned char PinToAdcChannel(PinName pin); |
bwang | 28:af9d43bcb371 | 13 | private: |
bwang | 28:af9d43bcb371 | 14 | unsigned char _channel; |
bwang | 28:af9d43bcb371 | 15 | }; |
bwang | 28:af9d43bcb371 | 16 | |
bwang | 1:1f58bdcf2956 | 17 | class CurrentSensor { |
bwang | 1:1f58bdcf2956 | 18 | public: |
bwang | 1:1f58bdcf2956 | 19 | virtual float GetCurrent() {return 0.0f;} |
bwang | 1:1f58bdcf2956 | 20 | virtual void Zero() {} |
bwang | 1:1f58bdcf2956 | 21 | }; |
bwang | 1:1f58bdcf2956 | 22 | |
bwang | 1:1f58bdcf2956 | 23 | class VoltageSensor { |
bwang | 1:1f58bdcf2956 | 24 | public: |
bwang | 1:1f58bdcf2956 | 25 | virtual float GetVoltage() {return 0.0f;} |
bwang | 1:1f58bdcf2956 | 26 | virtual void Zero(){} |
bwang | 1:1f58bdcf2956 | 27 | }; |
bwang | 1:1f58bdcf2956 | 28 | |
bwang | 1:1f58bdcf2956 | 29 | class PositionSensor { |
bwang | 1:1f58bdcf2956 | 30 | public: |
bwang | 1:1f58bdcf2956 | 31 | virtual float GetPosition() {return 0.0f;} |
bwang | 1:1f58bdcf2956 | 32 | }; |
bwang | 1:1f58bdcf2956 | 33 | |
bwang | 1:1f58bdcf2956 | 34 | class TempSensor { |
bwang | 1:1f58bdcf2956 | 35 | public: |
bwang | 1:1f58bdcf2956 | 36 | virtual float GetTemp() {return 0.0f;} |
bwang | 1:1f58bdcf2956 | 37 | }; |
bwang | 1:1f58bdcf2956 | 38 | |
bwang | 1:1f58bdcf2956 | 39 | class AnalogCurrentSensor: public CurrentSensor { |
bwang | 1:1f58bdcf2956 | 40 | public: |
bwang | 1:1f58bdcf2956 | 41 | AnalogCurrentSensor(PinName pin, float volts_per_amp); |
bwang | 1:1f58bdcf2956 | 42 | virtual void Zero(); |
bwang | 1:1f58bdcf2956 | 43 | virtual float GetCurrent(); |
bwang | 1:1f58bdcf2956 | 44 | private: |
bwang | 1:1f58bdcf2956 | 45 | float _zero_level, _volts_per_amp; |
bwang | 28:af9d43bcb371 | 46 | NativeAnalogIn *_in; |
bwang | 1:1f58bdcf2956 | 47 | }; |
bwang | 1:1f58bdcf2956 | 48 | |
bwang | 1:1f58bdcf2956 | 49 | class AnalogVoltageSensor: public VoltageSensor { |
bwang | 1:1f58bdcf2956 | 50 | public: |
bwang | 1:1f58bdcf2956 | 51 | AnalogVoltageSensor(PinName pin, float scale); |
bwang | 1:1f58bdcf2956 | 52 | virtual void Zero(); |
bwang | 1:1f58bdcf2956 | 53 | virtual float GetVoltage(); |
bwang | 1:1f58bdcf2956 | 54 | private: |
bwang | 1:1f58bdcf2956 | 55 | float _zero_level, _scale; |
bwang | 28:af9d43bcb371 | 56 | NativeAnalogIn *_in; |
bwang | 1:1f58bdcf2956 | 57 | }; |
bwang | 1:1f58bdcf2956 | 58 | |
bwang | 1:1f58bdcf2956 | 59 | class AnalogHallPositionSensor: public PositionSensor { |
bwang | 1:1f58bdcf2956 | 60 | public: |
bwang | 1:1f58bdcf2956 | 61 | AnalogHallPositionSensor(PinName pin_a, PinName pin_b, float cal1_a, float cal2_a, |
bwang | 1:1f58bdcf2956 | 62 | float cal1_b, float cal2_b, float offset); |
bwang | 1:1f58bdcf2956 | 63 | virtual float GetPosition(); |
bwang | 1:1f58bdcf2956 | 64 | private: |
bwang | 1:1f58bdcf2956 | 65 | float _cal1_a, _cal2_a; |
bwang | 1:1f58bdcf2956 | 66 | float _cal1_b, _cal2_b; |
bwang | 1:1f58bdcf2956 | 67 | float _offset; |
bwang | 28:af9d43bcb371 | 68 | NativeAnalogIn *_in_a, *_in_b; |
bwang | 1:1f58bdcf2956 | 69 | }; |
bwang | 1:1f58bdcf2956 | 70 | |
bwang | 1:1f58bdcf2956 | 71 | class NtcTempSensor: public TempSensor { |
bwang | 1:1f58bdcf2956 | 72 | public: |
bwang | 1:1f58bdcf2956 | 73 | NtcTempSensor(PinName pin, float r_25, float ntc_b, float r_divider); |
bwang | 1:1f58bdcf2956 | 74 | virtual float GetTemp(); |
bwang | 1:1f58bdcf2956 | 75 | private: |
bwang | 1:1f58bdcf2956 | 76 | float _ntc_a, _ntc_b, _r_divider; |
bwang | 28:af9d43bcb371 | 77 | NativeAnalogIn *_in; |
bwang | 1:1f58bdcf2956 | 78 | }; |
bwang | 1:1f58bdcf2956 | 79 | |
bwang | 1:1f58bdcf2956 | 80 | class Throttle { |
bwang | 1:1f58bdcf2956 | 81 | public: |
bwang | 1:1f58bdcf2956 | 82 | Throttle(PinName pin, float min, float max); |
bwang | 1:1f58bdcf2956 | 83 | float GetThrottle(); |
bwang | 1:1f58bdcf2956 | 84 | private: |
bwang | 1:1f58bdcf2956 | 85 | float _min, _max; |
bwang | 1:1f58bdcf2956 | 86 | VoltageSensor *_in; |
bwang | 1:1f58bdcf2956 | 87 | }; |
bwang | 1:1f58bdcf2956 | 88 | |
bwang | 1:1f58bdcf2956 | 89 | #endif |