Руслан Бредун / Mbed 2 deprecated STM32-MC_node

Dependencies:   mbed Watchdog stm32-sensor-base2

Committer:
ruslanbredun
Date:
Fri Nov 05 14:39:08 2021 +0000
Revision:
19:7935ca386e13
Parent:
0:d383e2dee0f7
LastFirmWare05/11/21;

Who changed what in which revision?

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