/** * * analog.h * Jan Dvorak z Vozerovic - dvorkaman@centrum.cz - dvorkaman.php5.cz */ #ifndef analog_h #define analog_h #include "WProgram.h" /************************************** /** * Implicit values */ #define ANALOG_MINIMAL_CHANGE 1 //converted #define ANALOG_BLIND_SPOT_SIZE 0 //real situation value #define ANALOG_MIN_POSITION 0 //real situation value #define ANALOG_MAX_POSITION 1023 //real situation value #define ANALOG_MIDDLE_POSITION 511 //real situation value #define ANALOG_VALUE_RANGE 1023 //converted /************************************** /** * Declaration of class myServo */ class Analog { public: Analog(int inputPin); Analog(int inputPin, int minimalChange); Analog(int inputPin, int minimalChange, int blindSpotSize); Analog(int inputPin, int minimalChange, int blindSpotSize, int minPosition, int maxPosition); Analog(int inputPin, int minimalChange, int blindSpotSize, int minPosition, int maxPosition, int middlePosition, int outputValueRange); int getPosition(); // <0, valueRange> boolean positionChanged(); // if changed from last call of value() private: int _inputPin; int _valueRange; //range into which position of trimmer is tranformed (if in "middle position", returns valueRange/2 ) int _middlePosition; //value of position when trimmer is in the middle int _minPosition; //minimal possible position obtained from input int _maxPosition; //maximal possible position obtained from input int _blindSpotSize; //area around middle position, when output value does not change int _minimalChange; //get change when position changes of... int _lastSentValue; int _actualValue; int _previousInputValue; //not converted void configurate(int inputPin, int minimalChange, int blindSpotSize, int minPosition, int maxPosition, int middlePosition, int outputValueRange); void checkAndCalculatePosition(); }; #endif