4ピン用ピング
Dependents: CatPot_SensorRight CatPotI2CSlavetest CatPotI2CSlavetest CatPot_SensorRight_F ... more
Fork of Ping by
Ping.cpp@2:6be59631152a, 2014-12-06 (annotated)
- Committer:
- ryuna
- Date:
- Sat Dec 06 07:40:50 2014 +0000
- Revision:
- 2:6be59631152a
- Parent:
- 0:1e4b66122368
using catpot . rakuraku;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rosienej | 0:1e4b66122368 | 1 | #include "Ping.h" |
rosienej | 0:1e4b66122368 | 2 | |
rosienej | 0:1e4b66122368 | 3 | #include "mbed.h" |
rosienej | 0:1e4b66122368 | 4 | |
ryuna | 2:6be59631152a | 5 | Ping::Ping(PinName Trig_PIN, PinName Echo_PIN) |
ryuna | 2:6be59631152a | 6 | : _event(Echo_PIN) |
ryuna | 2:6be59631152a | 7 | , _trig(Trig_PIN),_echo(Echo_PIN) |
rosienej | 0:1e4b66122368 | 8 | , _timer() |
rosienej | 0:1e4b66122368 | 9 | { |
rosienej | 0:1e4b66122368 | 10 | _event.rise(this,&Ping::_Starts); |
rosienej | 0:1e4b66122368 | 11 | _event.fall(this,&Ping::_Stops); |
rosienej | 0:1e4b66122368 | 12 | _SPEED_OF_SOUND_CM = 33; |
rosienej | 0:1e4b66122368 | 13 | } |
rosienej | 0:1e4b66122368 | 14 | |
rosienej | 0:1e4b66122368 | 15 | void Ping::_Starts(void) |
rosienej | 0:1e4b66122368 | 16 | { |
rosienej | 0:1e4b66122368 | 17 | _Valid = false; // start the timere, and invalidate the current time. |
rosienej | 0:1e4b66122368 | 18 | _Busy = true; |
rosienej | 0:1e4b66122368 | 19 | _timer.start(); |
rosienej | 0:1e4b66122368 | 20 | _Time = _timer.read_us(); |
rosienej | 0:1e4b66122368 | 21 | } |
rosienej | 0:1e4b66122368 | 22 | |
rosienej | 0:1e4b66122368 | 23 | void Ping::_Stops(void) |
rosienej | 0:1e4b66122368 | 24 | { |
rosienej | 0:1e4b66122368 | 25 | _Valid = true; // When it stops, update the time |
rosienej | 0:1e4b66122368 | 26 | _Busy = false; |
rosienej | 0:1e4b66122368 | 27 | _Time = _timer.read_us()-_Time; |
rosienej | 0:1e4b66122368 | 28 | } |
rosienej | 0:1e4b66122368 | 29 | |
rosienej | 0:1e4b66122368 | 30 | void Ping::Send() |
rosienej | 0:1e4b66122368 | 31 | { |
rosienej | 0:1e4b66122368 | 32 | |
ryuna | 2:6be59631152a | 33 | _trig.write(0); // see the ping documentation http://www.parallax.com/Portals/0/Downloads/docs/prod/acc/28015-PING-v1.6.pdf |
rosienej | 0:1e4b66122368 | 34 | wait_us(3); |
ryuna | 2:6be59631152a | 35 | _trig.write(1); |
rosienej | 0:1e4b66122368 | 36 | wait_us(3); |
ryuna | 2:6be59631152a | 37 | _trig.write(0); |
rosienej | 0:1e4b66122368 | 38 | |
rosienej | 0:1e4b66122368 | 39 | } |
rosienej | 0:1e4b66122368 | 40 | void Ping::Set_Speed_of_Sound(int SoS_ms ) |
rosienej | 0:1e4b66122368 | 41 | { |
rosienej | 0:1e4b66122368 | 42 | _SPEED_OF_SOUND_CM = SoS_ms; |
rosienej | 0:1e4b66122368 | 43 | } |
rosienej | 0:1e4b66122368 | 44 | |
rosienej | 0:1e4b66122368 | 45 | int Ping::Read_cm() |
rosienej | 0:1e4b66122368 | 46 | // -1 means not valid. |
rosienej | 0:1e4b66122368 | 47 | { |
rosienej | 0:1e4b66122368 | 48 | if(_Valid && ~_Busy) |
ryuna | 2:6be59631152a | 49 | return ((_Time*_SPEED_OF_SOUND_CM)/1000/2); |
rosienej | 0:1e4b66122368 | 50 | else |
rosienej | 0:1e4b66122368 | 51 | return -1; |
rosienej | 0:1e4b66122368 | 52 | } |