Driver for HC-SR04 connected to a Microbit

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?

UserRevisionLine numberNew 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);