blabla

Committer:
twjfransen
Date:
Thu Jun 21 11:39:58 2018 +0000
Revision:
0:8ae0145ae26e
bla

Who changed what in which revision?

UserRevisionLine numberNew contents of line
twjfransen 0:8ae0145ae26e 1 #include "sonar.h"
twjfransen 0:8ae0145ae26e 2
twjfransen 0:8ae0145ae26e 3 Sonar::Sonar(PinName trig, PinName echo)
twjfransen 0:8ae0145ae26e 4 :_trig(trig)
twjfransen 0:8ae0145ae26e 5 ,_echo(echo)
twjfransen 0:8ae0145ae26e 6 {
twjfransen 0:8ae0145ae26e 7 _timer.start();
twjfransen 0:8ae0145ae26e 8 _echo.rise(callback(this, &Sonar::echoBegin));
twjfransen 0:8ae0145ae26e 9 _echo.fall(callback(this, &Sonar::echoEnd));
twjfransen 0:8ae0145ae26e 10 _pinged = false;
twjfransen 0:8ae0145ae26e 11 }
twjfransen 0:8ae0145ae26e 12
twjfransen 0:8ae0145ae26e 13 void Sonar::echoBegin()
twjfransen 0:8ae0145ae26e 14 {
twjfransen 0:8ae0145ae26e 15 _timer.reset();
twjfransen 0:8ae0145ae26e 16 _begin = _timer.read_us();}
twjfransen 0:8ae0145ae26e 17
twjfransen 0:8ae0145ae26e 18 void Sonar::echoEnd()
twjfransen 0:8ae0145ae26e 19 {
twjfransen 0:8ae0145ae26e 20 _end = _timer.read_us();
twjfransen 0:8ae0145ae26e 21 _distance = (_end - _begin)/58.3;
twjfransen 0:8ae0145ae26e 22 _pinged = true;
twjfransen 0:8ae0145ae26e 23 }
twjfransen 0:8ae0145ae26e 24
twjfransen 0:8ae0145ae26e 25 float Sonar::getDistance()
twjfransen 0:8ae0145ae26e 26 {
twjfransen 0:8ae0145ae26e 27 _trig = 1;
twjfransen 0:8ae0145ae26e 28 wait_us(10);
twjfransen 0:8ae0145ae26e 29 _trig = 0;
twjfransen 0:8ae0145ae26e 30 while(!_pinged){printf("");}
twjfransen 0:8ae0145ae26e 31 _pinged = false;
twjfransen 0:8ae0145ae26e 32 return _distance;
twjfransen 0:8ae0145ae26e 33 }
twjfransen 0:8ae0145ae26e 34
twjfransen 0:8ae0145ae26e 35 void Sonar::pulse()
twjfransen 0:8ae0145ae26e 36 {
twjfransen 0:8ae0145ae26e 37 _trig = 1;
twjfransen 0:8ae0145ae26e 38 wait_us(10);
twjfransen 0:8ae0145ae26e 39 _trig = 0;
twjfransen 0:8ae0145ae26e 40 }
twjfransen 0:8ae0145ae26e 41
twjfransen 0:8ae0145ae26e 42 void Sonar::autoPulse(bool on_off, float frequency_ms /*=1*/)
twjfransen 0:8ae0145ae26e 43 {
twjfransen 0:8ae0145ae26e 44 if (on_off) {
twjfransen 0:8ae0145ae26e 45 _ticker.attach(callback(this, &Sonar::pulse), frequency_ms/1000);
twjfransen 0:8ae0145ae26e 46 }
twjfransen 0:8ae0145ae26e 47 else {
twjfransen 0:8ae0145ae26e 48 _ticker.detach();
twjfransen 0:8ae0145ae26e 49 }
twjfransen 0:8ae0145ae26e 50 }