Maxbotix library
Fork of MaxbotixDriver by
sonar.h@1:24d9d6d213aa, 2015-02-22 (annotated)
- Committer:
- joe4465
- Date:
- Sun Feb 22 20:12:17 2015 +0000
- Revision:
- 1:24d9d6d213aa
- Parent:
- 0:7e65f5077f5a
Added define check
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DanielC | 0:7e65f5077f5a | 1 | #include "mbed.h" |
joe4465 | 1:24d9d6d213aa | 2 | |
joe4465 | 1:24d9d6d213aa | 3 | #ifndef SONAR_H |
joe4465 | 1:24d9d6d213aa | 4 | #define SONAR_H |
DanielC | 0:7e65f5077f5a | 5 | /*** @file Driver for Maxbotix sonar modules |
DanielC | 0:7e65f5077f5a | 6 | * Uses pulse width input to read range results. |
DanielC | 0:7e65f5077f5a | 7 | * @author Daniel Casner <http://www.danielcasner.org> |
DanielC | 0:7e65f5077f5a | 8 | * |
DanielC | 0:7e65f5077f5a | 9 | * Known Issues: |
DanielC | 0:7e65f5077f5a | 10 | * If a timer rollover occures during a sample, the driver will drop that sample. |
DanielC | 0:7e65f5077f5a | 11 | */ |
DanielC | 0:7e65f5077f5a | 12 | |
DanielC | 0:7e65f5077f5a | 13 | /** Object representation of a sonar instance |
DanielC | 0:7e65f5077f5a | 14 | */ |
DanielC | 0:7e65f5077f5a | 15 | class Sonar { |
DanielC | 0:7e65f5077f5a | 16 | public: |
DanielC | 0:7e65f5077f5a | 17 | /** Sets up the driver and starts taking measurements |
DanielC | 0:7e65f5077f5a | 18 | * @param input The pin to read pulses from |
DanielC | 0:7e65f5077f5a | 19 | * @param t A running timer instance used to measure pulse width. |
DanielC | 0:7e65f5077f5a | 20 | * Note that the timer must have been started or results will be |
DanielC | 0:7e65f5077f5a | 21 | * invalid. |
DanielC | 0:7e65f5077f5a | 22 | */ |
DanielC | 0:7e65f5077f5a | 23 | Sonar(PinName input, Timer& t); |
DanielC | 0:7e65f5077f5a | 24 | |
DanielC | 0:7e65f5077f5a | 25 | /// Returns range in cm as int |
DanielC | 0:7e65f5077f5a | 26 | int read(); |
DanielC | 0:7e65f5077f5a | 27 | |
DanielC | 0:7e65f5077f5a | 28 | /// Returns the range in CM as an int |
DanielC | 0:7e65f5077f5a | 29 | operator int(); |
DanielC | 0:7e65f5077f5a | 30 | |
DanielC | 0:7e65f5077f5a | 31 | private: |
DanielC | 0:7e65f5077f5a | 32 | /// Inturrupt at start of pulse |
DanielC | 0:7e65f5077f5a | 33 | void pulseStart(); |
DanielC | 0:7e65f5077f5a | 34 | /// Interrupt at end of pulse |
DanielC | 0:7e65f5077f5a | 35 | void pulseStop(); |
DanielC | 0:7e65f5077f5a | 36 | |
DanielC | 0:7e65f5077f5a | 37 | /// Interrupt driver for the input pin |
DanielC | 0:7e65f5077f5a | 38 | InterruptIn interrupt; |
DanielC | 0:7e65f5077f5a | 39 | /// Reference to global timer instance |
DanielC | 0:7e65f5077f5a | 40 | Timer& time; |
DanielC | 0:7e65f5077f5a | 41 | /// Time of the start of the current pulse |
DanielC | 0:7e65f5077f5a | 42 | int pulseStartTime; |
DanielC | 0:7e65f5077f5a | 43 | /// The most recent sample |
DanielC | 0:7e65f5077f5a | 44 | int range; |
joe4465 | 1:24d9d6d213aa | 45 | }; |
joe4465 | 1:24d9d6d213aa | 46 | |
joe4465 | 1:24d9d6d213aa | 47 | #endif |