User | Revision | Line number | New 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
|