/** * Ping.h :: A library for using a Parallax PING))) sensor in robotic applications. * * @author Tom Malone * @copyright Released into the public domain. */ #ifndef Ping_h #define Ping_h #if ARDUINO < 100 #include #else #include #endif #include class Ping { private: uint8_t _pin; // Which pin the Ping))) sensor is connected to. String _distanceUnit; // The unit of measurement for returning distance to obstacle. // Possible units: cm, in, or raw. // cm == centimeters // in == inches // raw == return the raw time of the pulse duration in microseconds float _centimetersPerSecond; // The speed of sound we're using (because its variable, by a number of factors), converted to cm/second. int _collisionThreshold; // How close the robot is allowed to get to an obstacle before forcing it to turn away. float _centimetersToInches(float cmValue); // Converts centimeters to inches. unsigned long _pulseDuration; // Stores the time it takes the ultrasound to travel to the obstacle and back. public: Ping(uint8_t pin, String distanceUnit); // The constructor method unsigned long ping(); // Sends the actual Ping))) pulse. void activate(); // The activation method take care of activating the Ping))) sensor with a brief PWM pulse. uint8_t getCollisionThreshold(); // Returns the value of _collisionThreshold. void setCollisionThreshold(uint8_t threshold); // Sets the value of _collisionThreshold. uint16_t pulseTimeToCentimeters(unsigned long pulseDuration); // Converts the pulse duration to centimeters float pulseTimeToInches(unsigned long pulseDuration); // Converts the pulse duration to inches. String getDistanceUnit(); // Gets the distance unit the user wants his distances to be returned in. String setDistanceUnit(String distanceUnit); // Sets the distance unit the user wants his distances to be turned in. }; #endif