Maxbotix ultrasonic distance sensor library
Fork of MaxbotixDriver by
sonar.cpp@3:c231deea4d36, 2020-01-17 (annotated)
- Committer:
- SomeRandomBloke
- Date:
- Fri Jan 17 14:49:13 2020 +0000
- Revision:
- 3:c231deea4d36
- Parent:
- 1:330989f98a6e
- Child:
- 4:95f696f59d94
something
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DanielC | 0:7e65f5077f5a | 1 | #include "sonar.h" |
DanielC | 0:7e65f5077f5a | 2 | |
DanielC | 0:7e65f5077f5a | 3 | Sonar::Sonar(PinName input, Timer& t) : |
DanielC | 0:7e65f5077f5a | 4 | interrupt(input), |
DanielC | 0:7e65f5077f5a | 5 | time(t), |
DanielC | 0:7e65f5077f5a | 6 | pulseStartTime(0), |
DanielC | 0:7e65f5077f5a | 7 | range(0) { |
SomeRandomBloke | 3:c231deea4d36 | 8 | interrupt.rise(callback(this,&Sonar::pulseStart)); |
SomeRandomBloke | 3:c231deea4d36 | 9 | interrupt.fall(callback(this,&Sonar::pulseStop)); |
DanielC | 0:7e65f5077f5a | 10 | } |
DanielC | 0:7e65f5077f5a | 11 | |
DanielC | 0:7e65f5077f5a | 12 | int Sonar::read() { |
DanielC | 0:7e65f5077f5a | 13 | return range; |
DanielC | 0:7e65f5077f5a | 14 | } |
DanielC | 0:7e65f5077f5a | 15 | |
SomeRandomBloke | 1:330989f98a6e | 16 | int Sonar::readCm() { |
SomeRandomBloke | 1:330989f98a6e | 17 | return range / 58; // 58uS per CM |
SomeRandomBloke | 1:330989f98a6e | 18 | } |
SomeRandomBloke | 1:330989f98a6e | 19 | |
DanielC | 0:7e65f5077f5a | 20 | Sonar::operator int() { |
DanielC | 0:7e65f5077f5a | 21 | return read(); |
DanielC | 0:7e65f5077f5a | 22 | } |
DanielC | 0:7e65f5077f5a | 23 | |
DanielC | 0:7e65f5077f5a | 24 | void Sonar::pulseStart() { |
DanielC | 0:7e65f5077f5a | 25 | pulseStartTime = time.read_us(); |
DanielC | 0:7e65f5077f5a | 26 | } |
DanielC | 0:7e65f5077f5a | 27 | |
DanielC | 0:7e65f5077f5a | 28 | void Sonar::pulseStop() { |
DanielC | 0:7e65f5077f5a | 29 | int endTime = time.read_us(); |
DanielC | 0:7e65f5077f5a | 30 | if (endTime < pulseStartTime) return; // Escape if there's been a roll over |
SomeRandomBloke | 1:330989f98a6e | 31 | range = (endTime - pulseStartTime); // / 58; // 58uS per CM |
DanielC | 0:7e65f5077f5a | 32 | } |