Committer:
madcowswe
Date:
Mon Mar 19 18:00:11 2012 +0000
Revision:
0:525cb1ac9f1f

        

Who changed what in which revision?

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