Works with the parallax ping sensor. Uses a timer and interrupts to get the time and calculate the distance

Dependents:   CatPot_2v00_T_Sub CatPot_2v10_T_Sub CatPot_2v20_T_Sub CatPot_2v30_T_Sub

Fork of Ping by Joel Rosiene

Committer:
lilac0112_1
Date:
Thu Mar 10 14:10:44 2016 +0000
Revision:
3:b9760df91b3d
Parent:
1:6996f66161d7
changed usw trig time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosienej 0:1e4b66122368 1 /* mbed Ping Library
rosienej 0:1e4b66122368 2 * Copyright (c) 2007-2010 rosienej
rosienej 0:1e4b66122368 3 *
rosienej 0:1e4b66122368 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
rosienej 0:1e4b66122368 5 * of this software and associated documentation files (the "Software"), to deal
rosienej 0:1e4b66122368 6 * in the Software without restriction, including without limitation the rights
rosienej 0:1e4b66122368 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
rosienej 0:1e4b66122368 8 * copies of the Software, and to permit persons to whom the Software is
rosienej 0:1e4b66122368 9 * furnished to do so, subject to the following conditions:
rosienej 0:1e4b66122368 10 *
rosienej 0:1e4b66122368 11 * The above copyright notice and this permission notice shall be included in
rosienej 0:1e4b66122368 12 * all copies or substantial portions of the Software.
rosienej 0:1e4b66122368 13 *
rosienej 0:1e4b66122368 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
rosienej 0:1e4b66122368 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
rosienej 0:1e4b66122368 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
rosienej 0:1e4b66122368 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
rosienej 0:1e4b66122368 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
rosienej 0:1e4b66122368 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
rosienej 0:1e4b66122368 20 * THE SOFTWARE.
rosienej 0:1e4b66122368 21 */
rosienej 0:1e4b66122368 22
rosienej 0:1e4b66122368 23 #ifndef MBED_PING_H
rosienej 0:1e4b66122368 24 #define MBED_PING_H
rosienej 0:1e4b66122368 25
rosienej 0:1e4b66122368 26 #include "mbed.h"
rosienej 0:1e4b66122368 27 /** Ping class, based on an InterruptIn pin, and a timer
rosienej 0:1e4b66122368 28 * works with the parallax Ping))) sensor (www.parallax.com)
rosienej 0:1e4b66122368 29 *
rosienej 0:1e4b66122368 30 * Example:
rosienej 0:1e4b66122368 31 * @code
rosienej 0:1e4b66122368 32 * // Continuously send pings and read the sensor
rosienej 0:1e4b66122368 33 * #include "mbed.h"
rosienej 0:1e4b66122368 34 * #include "Ping.h"
rosienej 0:1e4b66122368 35 *
rosienej 0:1e4b66122368 36 * Ping Pinger(p21);
rosienej 0:1e4b66122368 37 *
rosienej 0:1e4b66122368 38 * int main() {
rosienej 0:1e4b66122368 39 * int range;
rosienej 0:1e4b66122368 40
rosienej 0:1e4b66122368 41 * while(1) {
rosienej 0:1e4b66122368 42 *
rosienej 0:1e4b66122368 43 * Pinger.Send();
rosienej 0:1e4b66122368 44 * wait_ms(30);
rosienej 0:1e4b66122368 45 * range = Pinger.Read_cm();
rosienej 0:1e4b66122368 46 * }
rosienej 0:1e4b66122368 47 * }
rosienej 0:1e4b66122368 48 * @endcode
rosienej 0:1e4b66122368 49 */
rosienej 1:6996f66161d7 50 class Ping {
rosienej 0:1e4b66122368 51 public:
rosienej 0:1e4b66122368 52 /** Create a Ping object connected to the specified InterruptIn pin
rosienej 0:1e4b66122368 53 *
rosienej 0:1e4b66122368 54 * @param PING_PIN InterruptIn pin to connect to
rosienej 0:1e4b66122368 55 */
rosienej 0:1e4b66122368 56 Ping(PinName PING_PIN);
rosienej 0:1e4b66122368 57
rosienej 0:1e4b66122368 58 /** Sends a Ping
rosienej 0:1e4b66122368 59 *
rosienej 0:1e4b66122368 60 * @param none
rosienej 0:1e4b66122368 61 */
rosienej 0:1e4b66122368 62 void Send(void);
rosienej 0:1e4b66122368 63
rosienej 0:1e4b66122368 64 /** Set the speed of sound, default 33 cm/ms
rosienej 0:1e4b66122368 65 *
rosienej 0:1e4b66122368 66 * @param Speed of sound in centimeters per milliseconds
rosienej 0:1e4b66122368 67 */
rosienej 0:1e4b66122368 68 void Set_Speed_of_Sound(int SoS_ms);
rosienej 0:1e4b66122368 69
rosienej 0:1e4b66122368 70 /** Read the result in centimeters
rosienej 0:1e4b66122368 71 *
rosienej 0:1e4b66122368 72 * @param none
rosienej 0:1e4b66122368 73 */
rosienej 0:1e4b66122368 74 int Read_cm(void);
rosienej 0:1e4b66122368 75
rosienej 0:1e4b66122368 76 protected:
rosienej 0:1e4b66122368 77
rosienej 0:1e4b66122368 78 InterruptIn _event;
rosienej 0:1e4b66122368 79 DigitalInOut _cmd;
rosienej 0:1e4b66122368 80 Timer _timer;
rosienej 0:1e4b66122368 81
rosienej 0:1e4b66122368 82 bool _Valid;
rosienej 0:1e4b66122368 83 bool _Busy;
rosienej 0:1e4b66122368 84 int _Time;
rosienej 0:1e4b66122368 85 int _SPEED_OF_SOUND_CM; /* in milliseconds */
rosienej 0:1e4b66122368 86
rosienej 0:1e4b66122368 87 void _Starts(void);
rosienej 0:1e4b66122368 88 void _Stops(void);
rosienej 0:1e4b66122368 89
rosienej 0:1e4b66122368 90 };
rosienej 0:1e4b66122368 91
rosienej 0:1e4b66122368 92 #endif
rosienej 0:1e4b66122368 93