Committer:
xiaxia686
Date:
Wed Mar 14 17:05:15 2012 +0000
Revision:
0:1e4910aeb884
RF + SRF05 libray

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xiaxia686 0:1e4910aeb884 1 /* mbed SRF05 Ultrasonic Rangefiner Library
xiaxia686 0:1e4910aeb884 2 * Copyright (c) 2007-2010, cstyles, sford
xiaxia686 0:1e4910aeb884 3 *
xiaxia686 0:1e4910aeb884 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
xiaxia686 0:1e4910aeb884 5 * of this software and associated documentation files (the "Software"), to deal
xiaxia686 0:1e4910aeb884 6 * in the Software without restriction, including without limitation the rights
xiaxia686 0:1e4910aeb884 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
xiaxia686 0:1e4910aeb884 8 * copies of the Software, and to permit persons to whom the Software is
xiaxia686 0:1e4910aeb884 9 * furnished to do so, subject to the following conditions:
xiaxia686 0:1e4910aeb884 10 *
xiaxia686 0:1e4910aeb884 11 * The above copyright notice and this permission notice shall be included in
xiaxia686 0:1e4910aeb884 12 * all copies or substantial portions of the Software.
xiaxia686 0:1e4910aeb884 13 *
xiaxia686 0:1e4910aeb884 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
xiaxia686 0:1e4910aeb884 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
xiaxia686 0:1e4910aeb884 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
xiaxia686 0:1e4910aeb884 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
xiaxia686 0:1e4910aeb884 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
xiaxia686 0:1e4910aeb884 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
xiaxia686 0:1e4910aeb884 20 * THE SOFTWARE.
xiaxia686 0:1e4910aeb884 21 */
xiaxia686 0:1e4910aeb884 22
xiaxia686 0:1e4910aeb884 23
xiaxia686 0:1e4910aeb884 24 #ifndef MBED_RFSRF05_H
xiaxia686 0:1e4910aeb884 25 #define MBED_RFSRF05_H
xiaxia686 0:1e4910aeb884 26
xiaxia686 0:1e4910aeb884 27 #include "mbed.h"
xiaxia686 0:1e4910aeb884 28 #include "RF12B.h"
xiaxia686 0:1e4910aeb884 29
xiaxia686 0:1e4910aeb884 30 #define CODE0 0x22
xiaxia686 0:1e4910aeb884 31 #define CODE1 0x44
xiaxia686 0:1e4910aeb884 32 #define CODE2 0x88
xiaxia686 0:1e4910aeb884 33
xiaxia686 0:1e4910aeb884 34 /** Library for the SRF05 Ultrasonic range finder
xiaxia686 0:1e4910aeb884 35 *
xiaxia686 0:1e4910aeb884 36 * Example:
xiaxia686 0:1e4910aeb884 37 * @code
xiaxia686 0:1e4910aeb884 38 * // Print measured distance
xiaxia686 0:1e4910aeb884 39 *
xiaxia686 0:1e4910aeb884 40 * #include "mbed.h"
xiaxia686 0:1e4910aeb884 41 * #include "SRF05.h"
xiaxia686 0:1e4910aeb884 42 *
xiaxia686 0:1e4910aeb884 43 * SRF05 srf(p9,p10);
xiaxia686 0:1e4910aeb884 44 *
xiaxia686 0:1e4910aeb884 45 * int main() {
xiaxia686 0:1e4910aeb884 46 * while(1) {
xiaxia686 0:1e4910aeb884 47 * printf("Measured : %.1f\n", srf.read());
xiaxia686 0:1e4910aeb884 48 * wait(0.2);
xiaxia686 0:1e4910aeb884 49 * }
xiaxia686 0:1e4910aeb884 50 * }
xiaxia686 0:1e4910aeb884 51 * @endcode
xiaxia686 0:1e4910aeb884 52 */
xiaxia686 0:1e4910aeb884 53 class RFSRF05 {
xiaxia686 0:1e4910aeb884 54 public:
xiaxia686 0:1e4910aeb884 55
xiaxia686 0:1e4910aeb884 56 /** Create a SRF05 object, connected to the specified pins
xiaxia686 0:1e4910aeb884 57 *
xiaxia686 0:1e4910aeb884 58 * @param trigger DigitalOut to the SRF05 trigger
xiaxia686 0:1e4910aeb884 59 * @param echo InterruptIn to measure the return pulse
xiaxia686 0:1e4910aeb884 60 */
xiaxia686 0:1e4910aeb884 61 RFSRF05(
xiaxia686 0:1e4910aeb884 62 PinName trigger,
xiaxia686 0:1e4910aeb884 63 PinName echo0,
xiaxia686 0:1e4910aeb884 64 PinName echo1,
xiaxia686 0:1e4910aeb884 65 PinName echo2,
xiaxia686 0:1e4910aeb884 66 PinName echo3,
xiaxia686 0:1e4910aeb884 67 PinName echo4,
xiaxia686 0:1e4910aeb884 68 PinName echo5,
xiaxia686 0:1e4910aeb884 69 PinName SDI,
xiaxia686 0:1e4910aeb884 70 PinName SDO,
xiaxia686 0:1e4910aeb884 71 PinName SCK,
xiaxia686 0:1e4910aeb884 72 PinName NCS,
xiaxia686 0:1e4910aeb884 73 PinName NIRQ);
xiaxia686 0:1e4910aeb884 74
xiaxia686 0:1e4910aeb884 75 /** A non-blocking function that will return the last measurement
xiaxia686 0:1e4910aeb884 76 *
xiaxia686 0:1e4910aeb884 77 * @returns floating point representation of distance in cm
xiaxia686 0:1e4910aeb884 78 */
xiaxia686 0:1e4910aeb884 79 float read0();
xiaxia686 0:1e4910aeb884 80 float read1();
xiaxia686 0:1e4910aeb884 81 float read2();
xiaxia686 0:1e4910aeb884 82
xiaxia686 0:1e4910aeb884 83 /** A short hand way of using the read function */
xiaxia686 0:1e4910aeb884 84 operator float();
xiaxia686 0:1e4910aeb884 85
xiaxia686 0:1e4910aeb884 86 private :
xiaxia686 0:1e4910aeb884 87 RF12B _rf;
xiaxia686 0:1e4910aeb884 88 DigitalOut _trigger;
xiaxia686 0:1e4910aeb884 89 InterruptIn _echo0;
xiaxia686 0:1e4910aeb884 90 InterruptIn _echo1;
xiaxia686 0:1e4910aeb884 91 InterruptIn _echo2;
xiaxia686 0:1e4910aeb884 92 InterruptIn _echo3;
xiaxia686 0:1e4910aeb884 93 InterruptIn _echo4;
xiaxia686 0:1e4910aeb884 94 InterruptIn _echo5;
xiaxia686 0:1e4910aeb884 95 Timer _timer;
xiaxia686 0:1e4910aeb884 96 Ticker _ticker;
xiaxia686 0:1e4910aeb884 97 void _rising (void);
xiaxia686 0:1e4910aeb884 98 void _falling (void);
xiaxia686 0:1e4910aeb884 99 void _startRange (void);
xiaxia686 0:1e4910aeb884 100 float _dist[3];
xiaxia686 0:1e4910aeb884 101 char _code[3];
xiaxia686 0:1e4910aeb884 102 int _beacon_counter;
xiaxia686 0:1e4910aeb884 103 };
xiaxia686 0:1e4910aeb884 104
xiaxia686 0:1e4910aeb884 105 #endif