blabla
sonar.cpp@0:8ae0145ae26e, 2018-06-21 (annotated)
- Committer:
- twjfransen
- Date:
- Thu Jun 21 11:39:58 2018 +0000
- Revision:
- 0:8ae0145ae26e
bla
Who changed what in which revision?
User | Revision | Line number | New 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 | } |