Allows the M3Pi to be used as a Sumo robot, using the sharp 100 distance sensors on the front. Hunter strategy

Dependencies:   mbed

Committer:
jonmarsh
Date:
Mon Jun 18 09:27:10 2012 +0000
Revision:
0:a29bcf098632
1st pass - not tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jonmarsh 0:a29bcf098632 1 #ifndef SHARPDIGIDIST100_H
jonmarsh 0:a29bcf098632 2 #define SHARPDIGIDIST100_H
jonmarsh 0:a29bcf098632 3
jonmarsh 0:a29bcf098632 4 #include "mbed.h"
jonmarsh 0:a29bcf098632 5
jonmarsh 0:a29bcf098632 6 /** A class which interfaces with a Sharp Digital Distance sensor (GP2Y0D810)
jonmarsh 0:a29bcf098632 7 *
jonmarsh 0:a29bcf098632 8 * Example:
jonmarsh 0:a29bcf098632 9 * @code
jonmarsh 0:a29bcf098632 10 *
jonmarsh 0:a29bcf098632 11 * @endcode
jonmarsh 0:a29bcf098632 12 *
jonmarsh 0:a29bcf098632 13 */
jonmarsh 0:a29bcf098632 14
jonmarsh 0:a29bcf098632 15 class SharpDigiDist100
jonmarsh 0:a29bcf098632 16 {
jonmarsh 0:a29bcf098632 17 public:
jonmarsh 0:a29bcf098632 18
jonmarsh 0:a29bcf098632 19 /** Create a sensor input
jonmarsh 0:a29bcf098632 20 *
jonmarsh 0:a29bcf098632 21 * @param pin The pin the output of the sensor is connected to
jonmarsh 0:a29bcf098632 22 */
jonmarsh 0:a29bcf098632 23
jonmarsh 0:a29bcf098632 24 SharpDigiDist100(PinName pin);
jonmarsh 0:a29bcf098632 25
jonmarsh 0:a29bcf098632 26 /** The enum which makes up the output
jonmarsh 0:a29bcf098632 27 *
jonmarsh 0:a29bcf098632 28 */
jonmarsh 0:a29bcf098632 29
jonmarsh 0:a29bcf098632 30 enum Distance
jonmarsh 0:a29bcf098632 31 {
jonmarsh 0:a29bcf098632 32 Near = 1,
jonmarsh 0:a29bcf098632 33 Mid,
jonmarsh 0:a29bcf098632 34 Far
jonmarsh 0:a29bcf098632 35 };
jonmarsh 0:a29bcf098632 36
jonmarsh 0:a29bcf098632 37 /** Returns the distace as an enum
jonmarsh 0:a29bcf098632 38 *
jonmarsh 0:a29bcf098632 39 * @return The distance code: 1 is near, 2 is middle distance and 3 is far
jonmarsh 0:a29bcf098632 40 */
jonmarsh 0:a29bcf098632 41
jonmarsh 0:a29bcf098632 42 int getDistance();
jonmarsh 0:a29bcf098632 43
jonmarsh 0:a29bcf098632 44 /** Attaches a function which is called on distance change
jonmarsh 0:a29bcf098632 45 *
jonmarsh 0:a29bcf098632 46 * @param A pointer to a function with params/returns: void func(void)
jonmarsh 0:a29bcf098632 47 */
jonmarsh 0:a29bcf098632 48
jonmarsh 0:a29bcf098632 49 void attachOnChange(void (*ptr) (void));
jonmarsh 0:a29bcf098632 50
jonmarsh 0:a29bcf098632 51
jonmarsh 0:a29bcf098632 52 protected:
jonmarsh 0:a29bcf098632 53
jonmarsh 0:a29bcf098632 54 InterruptIn intin;
jonmarsh 0:a29bcf098632 55
jonmarsh 0:a29bcf098632 56 DigitalIn pinin;
jonmarsh 0:a29bcf098632 57
jonmarsh 0:a29bcf098632 58 Timer timer1;
jonmarsh 0:a29bcf098632 59
jonmarsh 0:a29bcf098632 60 enum Distance current;
jonmarsh 0:a29bcf098632 61
jonmarsh 0:a29bcf098632 62 enum Distance last;
jonmarsh 0:a29bcf098632 63
jonmarsh 0:a29bcf098632 64 void onInt();
jonmarsh 0:a29bcf098632 65
jonmarsh 0:a29bcf098632 66 Timeout timeout;
jonmarsh 0:a29bcf098632 67
jonmarsh 0:a29bcf098632 68 void (*onChange) (void);
jonmarsh 0:a29bcf098632 69
jonmarsh 0:a29bcf098632 70 bool onChangeAttached;
jonmarsh 0:a29bcf098632 71
jonmarsh 0:a29bcf098632 72 //DigitalOut Debug;
jonmarsh 0:a29bcf098632 73 };
jonmarsh 0:a29bcf098632 74
jonmarsh 0:a29bcf098632 75 #endif