Driver for HC-SR04 connected to a Microbit
MicrobitUltrasound.cpp@2:826744569821, 2016-08-22 (annotated)
- Committer:
- isaeldiaz@developer.mbed.org
- Date:
- Mon Aug 22 22:13:17 2016 +0200
- Revision:
- 2:826744569821
- Parent:
- 1:17a477201275
- Child:
- 3:8a5d2e5f64fb
updates on ultrasound lib
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
isaeldiaz@developer.mbed.org | 1:17a477201275 | 1 | /* |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 2 | The MIT License (MIT) |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 3 | |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 4 | Copyright (c) 2016 British Broadcasting Corporation. |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 5 | This software is provided by Lancaster University by arrangement with the BBC. |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 6 | |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 7 | Permission is hereby granted, free of charge, to any person obtaining a |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 8 | copy of this software and associated documentation files (the "Software"), |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 9 | to deal in the Software without restriction, including without limitation |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 10 | the rights to use, copy, modify, merge, publish, distribute, sublicense, |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 11 | and/or sell copies of the Software, and to permit persons to whom the |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 12 | Software is furnished to do so, subject to the following conditions: |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 13 | |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 14 | The above copyright notice and this permission notice shall be included in |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 15 | all copies or substantial portions of the Software. |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 16 | |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 20 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 23 | DEALINGS IN THE SOFTWARE. |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 24 | */ |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 25 | |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 26 | /** |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 27 | * Class definition for MicroBitPin. |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 28 | * |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 29 | * Commonly represents an I/O pin on the edge connector. |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 30 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 31 | #include "MicrobitUltrasound.h" |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 32 | #include "MicroBitPin.h" |
isaeldiaz@developer.mbed.org | 2:826744569821 | 33 | #include "MicroBitConfig.h" |
isaeldiaz@developer.mbed.org | 2:826744569821 | 34 | #include "MicroBitSystemTimer.h" |
isaeldiaz@developer.mbed.org | 2:826744569821 | 35 | #include "MicroBitFiber.h" |
isaeldiaz@developer.mbed.org | 1:17a477201275 | 36 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 37 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 38 | * Constructor. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 39 | * Create new MicrobitUltrasound that reports distance to closest object |
isaeldiaz@developer.mbed.org | 2:826744569821 | 40 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 41 | * @param _trigPinName Name of the MicroBitPin to be used as trigger. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 42 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 43 | * @param _echoPinName Name of the MicroBitPin to be used as response from sensor. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 44 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 45 | * @code |
isaeldiaz@developer.mbed.org | 2:826744569821 | 46 | * MicroBitPin P1_PING = MicroBitPin(MICROBIT_ID_IO_P1, MICROBIT_PIN_P1, PIN_CAPABILITY_DIGITAL); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 47 | * MicroBitPin P2_ECHO = MicroBitPin(MICROBIT_ID_IO_P2, MICROBIT_PIN_P2, PIN_CAPABILITY_DIGITAL); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 48 | * MicrobitUltrasound uSoundSensor(P1_PING, P2_ECHO); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 49 | * @endcode |
isaeldiaz@developer.mbed.org | 2:826744569821 | 50 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 51 | MicrobitUltrasound(MicroBitPin& pingPin, MicroBitPin& echoPin, uint16_t id): |
isaeldiaz@developer.mbed.org | 2:826744569821 | 52 | ping(&pingPin) : echo(&echoPin) |
isaeldiaz@developer.mbed.org | 2:826744569821 | 53 | { |
isaeldiaz@developer.mbed.org | 2:826744569821 | 54 | this->id = id; |
isaeldiaz@developer.mbed.org | 2:826744569821 | 55 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 56 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 57 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 58 | * Constructor. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 59 | * Create new MicrobitUltrasound that measures distance to nearest object. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 60 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 61 | * @param id the unique EventModel id of this component. Defaults to MICROBIT_ID_ULTRASOUND. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 62 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 63 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 64 | * @code |
isaeldiaz@developer.mbed.org | 2:826744569821 | 65 | * MicrobitUltrasound ultrasound |
isaeldiaz@developer.mbed.org | 2:826744569821 | 66 | * @endcode |
isaeldiaz@developer.mbed.org | 2:826744569821 | 67 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 68 | MicrobitUltrasound(uint16_t id = MICROBIT_ID_ULTRASOUND); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 69 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 70 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 71 | * Set the sample rate at which the micro:bit triggers sensor (in ms). |
isaeldiaz@developer.mbed.org | 2:826744569821 | 72 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 73 | * The default sample period is 1 second. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 74 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 75 | * @param period the requested time between pings, in milliseconds. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 76 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 77 | * @note the micro:bit sends pings in the background. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 78 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 79 | void setPeriod(int period_ms); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 80 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 81 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 82 | * Get the sample rate at which the micro:bit triggers sensor (in ms). |
isaeldiaz@developer.mbed.org | 2:826744569821 | 83 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 84 | * @return period the requested time between pings, in milliseconds. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 85 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 86 | void getPeriod(); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 87 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 88 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 89 | * Get the pulse's duration from sensor, last updated sample |
isaeldiaz@developer.mbed.org | 2:826744569821 | 90 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 91 | * @return the latest updated pulse duration. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 92 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 93 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 94 | int getPulseDuration(); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 95 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 96 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 97 | * Send ping to start measurement in sensor |
isaeldiaz@developer.mbed.org | 2:826744569821 | 98 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 99 | * This call also will add the class to fiber components to receive |
isaeldiaz@developer.mbed.org | 2:826744569821 | 100 | * one callback only. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 101 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 102 | * @return MICROBIT_OK on success. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 103 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 104 | int ping(void); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 105 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 106 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 107 | * Start periodic ping to sensor. This call also will add the class |
isaeldiaz@developer.mbed.org | 2:826744569821 | 108 | * to fiber components for periodic callbacks. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 109 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 110 | * @return MICROBIT_OK on success. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 111 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 112 | int start(void); |
isaeldiaz@developer.mbed.org | 2:826744569821 | 113 | |
isaeldiaz@developer.mbed.org | 2:826744569821 | 114 | /** |
isaeldiaz@developer.mbed.org | 2:826744569821 | 115 | * Stop periodic ping to sensor. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 116 | * |
isaeldiaz@developer.mbed.org | 2:826744569821 | 117 | * @return MICROBIT_OK on success. |
isaeldiaz@developer.mbed.org | 2:826744569821 | 118 | */ |
isaeldiaz@developer.mbed.org | 2:826744569821 | 119 | int stop(void); |