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

Dependencies:   mbed

Committer:
p07gbar
Date:
Wed Mar 14 20:31:09 2012 +0000
Revision:
0:342c14fb10c0
First upload

Who changed what in which revision?

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