Maxbotix library

Fork of MaxbotixDriver by Daniel Casner

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?

UserRevisionLine numberNew 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