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

Dependencies:   mbed

Committer:
jonmarsh
Date:
Mon Jun 18 09:54:54 2012 +0000
Revision:
0:dda4072af5ff
not tested

Who changed what in which revision?

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