Works with the parallax ping sensor. Uses a timer and interrupts to get the time and calculate the distance
Dependents: Wifly_TCPEchoServer_Sensors ROBOT_v01 ROBOT_v02 mbed_blinky ... more
Ping.h
00001 /* mbed Ping Library 00002 * Copyright (c) 2007-2010 rosienej 00003 * 00004 * Permission is hereby granted, free of charge, to any person obtaining a copy 00005 * of this software and associated documentation files (the "Software"), to deal 00006 * in the Software without restriction, including without limitation the rights 00007 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00008 * copies of the Software, and to permit persons to whom the Software is 00009 * furnished to do so, subject to the following conditions: 00010 * 00011 * The above copyright notice and this permission notice shall be included in 00012 * all copies or substantial portions of the Software. 00013 * 00014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00017 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00019 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00020 * THE SOFTWARE. 00021 */ 00022 00023 #ifndef MBED_PING_H 00024 #define MBED_PING_H 00025 00026 #include "mbed.h" 00027 /** Ping class, based on an InterruptIn pin, and a timer 00028 * works with the parallax Ping))) sensor (www.parallax.com) 00029 * 00030 * Example: 00031 * @code 00032 * // Continuously send pings and read the sensor 00033 * #include "mbed.h" 00034 * #include "Ping.h" 00035 * 00036 * Ping Pinger(p21); 00037 * 00038 * int main() { 00039 * int range; 00040 00041 * while(1) { 00042 * 00043 * Pinger.Send(); 00044 * wait_ms(30); 00045 * range = Pinger.Read_cm(); 00046 * } 00047 * } 00048 * @endcode 00049 */ 00050 class Ping { 00051 public: 00052 /** Create a Ping object connected to the specified InterruptIn pin 00053 * 00054 * @param PING_PIN InterruptIn pin to connect to 00055 */ 00056 Ping(PinName PING_PIN); 00057 00058 /** Sends a Ping 00059 * 00060 * @param none 00061 */ 00062 void Send(void); 00063 00064 /** Set the speed of sound, default 33 cm/ms 00065 * 00066 * @param Speed of sound in centimeters per milliseconds 00067 */ 00068 void Set_Speed_of_Sound(int SoS_ms); 00069 00070 /** Read the result in centimeters 00071 * 00072 * @param none 00073 */ 00074 int Read_cm(void); 00075 00076 protected: 00077 00078 InterruptIn _event; 00079 DigitalInOut _cmd; 00080 Timer _timer; 00081 00082 bool _Valid; 00083 bool _Busy; 00084 int _Time; 00085 int _SPEED_OF_SOUND_CM; /* in milliseconds */ 00086 00087 void _Starts(void); 00088 void _Stops(void); 00089 00090 }; 00091 00092 #endif 00093
Generated on Thu Jul 14 2022 08:02:40 by 1.7.2