![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
working version with calibration done
Fork of Eurobot2013 by
Diff: Kalman/Sonar/RFSRF05.h
- Revision:
- 1:6799c07fe510
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Kalman/Sonar/RFSRF05.h Wed Nov 07 14:37:35 2012 +0000 @@ -0,0 +1,102 @@ + +#ifndef MBED_RFSRF05_H +#define MBED_RFSRF05_H + + + +#include "mbed.h" +#include "RF12B.h" +#include "globals.h" + + +#define CODE0 0x22 +#define CODE1 0x44 +#define CODE2 0x88 + +/* SAMPLE IMPLEMENTATION! +RFSRF05 my_srf(p13,p21,p22,p23,p24,p25,p26,p5,p6,p7,p8,p9); + + +void callbinmain(int num, float dist) { + //Here is where you deal with your brand new reading ;D +} + +int main() { + pc.printf("Hello World of RobotSonar!\r\n"); + my_srf.callbackfunc = callbinmain; + + while (1); +} + + */ + +class DummyCT; + +class RFSRF05 { +public: + + RFSRF05( + PinName trigger, + PinName echo0, + PinName echo1, + PinName echo2, + PinName echo3, + PinName echo4, + PinName echo5, + PinName SDI, + PinName SDO, + PinName SCK, + PinName NCS, + PinName NIRQ); + + /** A non-blocking function that will return the last measurement + * + * @returns floating point representation of distance in mm + */ + float read0(); + float read1(); + float read2(); + float read(unsigned int beaconnum); + + + /** A assigns a callback function when a new reading is available **/ + void (*callbackfunc)(int beaconnum, float distance); + DummyCT* callbackobj; + void (DummyCT::*mcallbackfunc)(int beaconnum, float distance, float variance); + + //triggers a read + #ifndef ROBOT_PRIMARY + void startRange(unsigned char rx_code); + #endif + + //set codes + void setCode(int code_index, unsigned char code); + unsigned char codes[3]; + + /** A short hand way of using the read function */ + //operator float(); + +private : + RF12B _rf; + DigitalOut _trigger; + InterruptIn _echo0; + InterruptIn _echo1; + InterruptIn _echo2; + InterruptIn _echo3; + InterruptIn _echo4; + InterruptIn _echo5; + Timer _timer; + Ticker _ticker; + #ifdef ROBOT_PRIMARY + void _startRange(void); + #endif + void _rising (void); + void _falling (void); + float _dist[3]; + int _beacon_counter; + bool ValidPulse; + bool expValidPulse; + +}; + +#endif