16 #include "PIDSource.h" 17 #include "SensorBase.h" 38 enum DistanceUnit { kInches = 0, kMilliMeters = 1 };
41 DistanceUnit units = kInches);
43 DistanceUnit units = kInches);
44 Ultrasonic(std::shared_ptr<DigitalOutput> pingChannel,
45 std::shared_ptr<DigitalInput> echoChannel,
46 DistanceUnit units = kInches);
47 Ultrasonic(
int pingChannel,
int echoChannel, DistanceUnit units = kInches);
55 bool IsEnabled()
const {
return m_enabled; }
56 void SetEnabled(
bool enable) { m_enabled = enable; }
68 static void UltrasonicChecker();
71 static constexpr
double kPingTime = 10 * 1e-6;
74 static constexpr
int kPriority = 64;
77 static constexpr
double kMaxUltrasonicTime = 0.1;
78 static constexpr
double kSpeedOfSoundInchesPerSec = 1130.0 * 12.0;
81 static std::thread m_thread;
84 static std::vector<Ultrasonic*> m_sensors;
87 static std::atomic<bool> m_automaticEnabled;
89 std::shared_ptr<DigitalOutput> m_pingChannel;
90 std::shared_ptr<DigitalInput> m_echoChannel;
91 bool m_enabled =
false;
Definition: RobotController.cpp:14
Ultrasonic(DigitalOutput *pingChannel, DigitalInput *echoChannel, DistanceUnit units=kInches)
Create an instance of an Ultrasonic Sensor from a DigitalInput for the echo channel and a DigitalOutp...
Definition: Ultrasonic.cpp:110
double PIDGet() override
Get the range in the current DistanceUnit for the PIDSource base object.
Definition: Ultrasonic.cpp:284
Base class for all sensors.
Definition: SensorBase.h:25
~Ultrasonic() override
Destructor for the ultrasonic sensor.
Definition: Ultrasonic.cpp:171
PIDSource interface is a generic sensor source for the PID class.
Definition: PIDSource.h:20
bool IsRangeValid() const
Check if there is a valid range measurement.
Definition: Ultrasonic.cpp:254
void InitSendable(SendableBuilder &builder) override
Initializes this Sendable object.
Definition: Ultrasonic.cpp:318
Class for counting the number of ticks on a digital input channel.
Definition: Counter.h:33
DistanceUnit GetDistanceUnits() const
Get the current DistanceUnit that is used for the PIDSource base object.
Definition: Ultrasonic.cpp:314
void SetDistanceUnits(DistanceUnit units)
Set the current DistanceUnit that should be used for the PIDSource base object.
Definition: Ultrasonic.cpp:307
double GetRangeInches() const
Get the range in inches from the ultrasonic sensor.
Definition: Ultrasonic.cpp:263
void Ping()
Single ping to ultrasonic sensor.
Definition: Ultrasonic.cpp:237
static void SetAutomaticMode(bool enabling)
Turn Automatic mode on/off.
Definition: Ultrasonic.cpp:197
Class to write to digital outputs.
Definition: DigitalOutput.h:24
Definition: SendableBuilder.h:23
double GetRangeMM() const
Get the range in millimeters from the ultrasonic sensor.
Definition: Ultrasonic.cpp:277
void SetPIDSourceType(PIDSourceType pidSource) override
Set which parameter you are using as a process control variable.
Definition: Ultrasonic.cpp:295
Ultrasonic rangefinder class.
Definition: Ultrasonic.h:36