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 #include "SharpDigiDist100.h"
jonmarsh 0:a29bcf098632 2
jonmarsh 0:a29bcf098632 3 SharpDigiDist100::SharpDigiDist100(PinName pin):intin(pin),pinin(pin)
jonmarsh 0:a29bcf098632 4 {
jonmarsh 0:a29bcf098632 5 timer1.reset();
jonmarsh 0:a29bcf098632 6 intin.rise(this,&SharpDigiDist100::onInt);
jonmarsh 0:a29bcf098632 7 intin.fall(this,&SharpDigiDist100::onInt);
jonmarsh 0:a29bcf098632 8 timer1.start();
jonmarsh 0:a29bcf098632 9 //onInt();
jonmarsh 0:a29bcf098632 10 current = Far;
jonmarsh 0:a29bcf098632 11 //last = NA;
jonmarsh 0:a29bcf098632 12 onChangeAttached = false;
jonmarsh 0:a29bcf098632 13 }
jonmarsh 0:a29bcf098632 14
jonmarsh 0:a29bcf098632 15 void SharpDigiDist100::onInt()
jonmarsh 0:a29bcf098632 16 {
jonmarsh 0:a29bcf098632 17 timer1.stop();
jonmarsh 0:a29bcf098632 18 last = current;
jonmarsh 0:a29bcf098632 19 int timeFromLast = timer1.read_ms();
jonmarsh 0:a29bcf098632 20 if (timeFromLast < 100)
jonmarsh 0:a29bcf098632 21 {
jonmarsh 0:a29bcf098632 22 current = Far;
jonmarsh 0:a29bcf098632 23 timeout.attach(this,&SharpDigiDist100::onInt, 0.3);
jonmarsh 0:a29bcf098632 24 }
jonmarsh 0:a29bcf098632 25 else
jonmarsh 0:a29bcf098632 26 {
jonmarsh 0:a29bcf098632 27 if(pinin)
jonmarsh 0:a29bcf098632 28 {
jonmarsh 0:a29bcf098632 29 current = Mid;
jonmarsh 0:a29bcf098632 30 }
jonmarsh 0:a29bcf098632 31 else
jonmarsh 0:a29bcf098632 32 {
jonmarsh 0:a29bcf098632 33 current = Near;
jonmarsh 0:a29bcf098632 34 }
jonmarsh 0:a29bcf098632 35 }
jonmarsh 0:a29bcf098632 36 if(current != last)
jonmarsh 0:a29bcf098632 37 {
jonmarsh 0:a29bcf098632 38 if(onChangeAttached)
jonmarsh 0:a29bcf098632 39 {
jonmarsh 0:a29bcf098632 40 onChange();
jonmarsh 0:a29bcf098632 41 }
jonmarsh 0:a29bcf098632 42 }
jonmarsh 0:a29bcf098632 43 timer1.reset();
jonmarsh 0:a29bcf098632 44 timer1.start();
jonmarsh 0:a29bcf098632 45 }
jonmarsh 0:a29bcf098632 46
jonmarsh 0:a29bcf098632 47 int SharpDigiDist100::getDistance()
jonmarsh 0:a29bcf098632 48 {
jonmarsh 0:a29bcf098632 49 return current;
jonmarsh 0:a29bcf098632 50 }
jonmarsh 0:a29bcf098632 51
jonmarsh 0:a29bcf098632 52 void SharpDigiDist100::attachOnChange(void (*ptr) (void))
jonmarsh 0:a29bcf098632 53 {
jonmarsh 0:a29bcf098632 54 onChange = ptr;
jonmarsh 0:a29bcf098632 55 onChangeAttached = true;
jonmarsh 0:a29bcf098632 56 }