Руслан Бредун / Mbed 2 deprecated Santec

Dependencies:   mbed Watchdog

Committer:
ruslanbredun
Date:
Tue Nov 02 11:28:01 2021 +0000
Revision:
0:858059db6068
New FirmWare for MC_node;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ruslanbredun 0:858059db6068 1 #ifndef JSN_SR04_H_
ruslanbredun 0:858059db6068 2 #define JSN_SR04_H_
ruslanbredun 0:858059db6068 3
ruslanbredun 0:858059db6068 4 class JSN_SR04 {
ruslanbredun 0:858059db6068 5
ruslanbredun 0:858059db6068 6 public:
ruslanbredun 0:858059db6068 7
ruslanbredun 0:858059db6068 8 /** Receives two PinName variables.
ruslanbredun 0:858059db6068 9 * @param echoPin mbed pin to which the echo signal is connected to
ruslanbredun 0:858059db6068 10 * @param triggerPin mbed pin to which the trigger signal is connected to
ruslanbredun 0:858059db6068 11 */
ruslanbredun 0:858059db6068 12 JSN_SR04(PinName echoPin, PinName triggerPin);
ruslanbredun 0:858059db6068 13
ruslanbredun 0:858059db6068 14 /** Start the measurement. Measurement time depends on the distance.
ruslanbredun 0:858059db6068 15 * Maximum measurement time is limited to 25 ms (400 cm).
ruslanbredun 0:858059db6068 16 */
ruslanbredun 0:858059db6068 17 void startMeasurement();
ruslanbredun 0:858059db6068 18
ruslanbredun 0:858059db6068 19 /** Returns the distance in cm. Requires previous call of startMeasurement().
ruslanbredun 0:858059db6068 20 * @returns distance of the measuring object in cm.
ruslanbredun 0:858059db6068 21 */
ruslanbredun 0:858059db6068 22 float getDistance_cm();
ruslanbredun 0:858059db6068 23
ruslanbredun 0:858059db6068 24 /** Returns the distance in mm. Requires previous call of startMeasurement().
ruslanbredun 0:858059db6068 25 * @returns distance of the measuring object in mm.
ruslanbredun 0:858059db6068 26 */
ruslanbredun 0:858059db6068 27 float getDistance_mm();
ruslanbredun 0:858059db6068 28
ruslanbredun 0:858059db6068 29 /** Sets the minimum and maximum ranges between the factory values of 2 cm and 400 cm.
ruslanbredun 0:858059db6068 30 * @param minRange Minimum range in cm. Must be between 2 cm and maxRange.
ruslanbredun 0:858059db6068 31 * @param maxRange Maximum range in cm. Must be between minRange and 400 cm.
ruslanbredun 0:858059db6068 32 */
ruslanbredun 0:858059db6068 33 void setRanges(float minRange, float maxRange);
ruslanbredun 0:858059db6068 34
ruslanbredun 0:858059db6068 35 /** Retreives the minimum sensor range set by the user.
ruslanbredun 0:858059db6068 36 * @returns the minimum sensor range set by the user in cm.
ruslanbredun 0:858059db6068 37 */
ruslanbredun 0:858059db6068 38 float getMinRange();
ruslanbredun 0:858059db6068 39
ruslanbredun 0:858059db6068 40 /** Retreives the maximum sensor range set by the user.
ruslanbredun 0:858059db6068 41 * @returns the maximum sensor range set by the user in cm.
ruslanbredun 0:858059db6068 42 */
ruslanbredun 0:858059db6068 43 float getMaxRange();
ruslanbredun 0:858059db6068 44
ruslanbredun 0:858059db6068 45 /** Checks if the new data is ready.
ruslanbredun 0:858059db6068 46 * @returns true if new data is ready, false otherwise.
ruslanbredun 0:858059db6068 47 */
ruslanbredun 0:858059db6068 48 bool isNewDataReady();
ruslanbredun 0:858059db6068 49
ruslanbredun 0:858059db6068 50 private:
ruslanbredun 0:858059db6068 51
ruslanbredun 0:858059db6068 52 InterruptIn echo; // echo pin
ruslanbredun 0:858059db6068 53 DigitalOut trigger; // trigger pin
ruslanbredun 0:858059db6068 54 Timer timer; // echo pulsewidth measurement
ruslanbredun 0:858059db6068 55 float distance; // store the distance in cm
ruslanbredun 0:858059db6068 56 float minDistance; // minimum measurable distance
ruslanbredun 0:858059db6068 57 float maxDistance; // maximum measurable distance
ruslanbredun 0:858059db6068 58 Timeout triggerTimeout, echoTimeout;
ruslanbredun 0:858059db6068 59 bool newDataReady, timerStarted;
ruslanbredun 0:858059db6068 60
ruslanbredun 0:858059db6068 61 static const int SENSOR_TIMEOUT = 25000; // Max posible signal duration (if there is an obstacle)
ruslanbredun 0:858059db6068 62
ruslanbredun 0:858059db6068 63 /** Start the timer. */
ruslanbredun 0:858059db6068 64 void startTimer();
ruslanbredun 0:858059db6068 65
ruslanbredun 0:858059db6068 66 /** Stop the timer. */
ruslanbredun 0:858059db6068 67 void stopTimer();
ruslanbredun 0:858059db6068 68
ruslanbredun 0:858059db6068 69 /** Initialization. */
ruslanbredun 0:858059db6068 70 void init();
ruslanbredun 0:858059db6068 71
ruslanbredun 0:858059db6068 72 /** Turn off the trigger */
ruslanbredun 0:858059db6068 73 void turnOffTrigger();
ruslanbredun 0:858059db6068 74
ruslanbredun 0:858059db6068 75 /** Distance calculation */
ruslanbredun 0:858059db6068 76 void calculateDistance();
ruslanbredun 0:858059db6068 77 };
ruslanbredun 0:858059db6068 78
ruslanbredun 0:858059db6068 79 #endif