15 #include "frc/Counter.h"
16 #include "frc/ErrorBase.h"
17 #include "frc/PIDSource.h"
18 #include "frc/smartdashboard/SendableBase.h"
39 enum DistanceUnit { kInches = 0, kMilliMeters = 1 };
53 Ultrasonic(
int pingChannel,
int echoChannel, DistanceUnit units = kInches);
66 DistanceUnit units = kInches);
79 DistanceUnit units = kInches);
91 Ultrasonic(std::shared_ptr<DigitalOutput> pingChannel,
92 std::shared_ptr<DigitalInput> echoChannel,
93 DistanceUnit units = kInches);
149 bool IsEnabled()
const;
151 void SetEnabled(
bool enable);
200 static void UltrasonicChecker();
203 static constexpr
double kPingTime = 10 * 1e-6;
206 static constexpr
int kPriority = 64;
209 static constexpr
double kMaxUltrasonicTime = 0.1;
210 static constexpr
double kSpeedOfSoundInchesPerSec = 1130.0 * 12.0;
213 static std::thread m_thread;
216 static std::vector<Ultrasonic*> m_sensors;
219 static std::atomic<bool> m_automaticEnabled;
221 std::shared_ptr<DigitalOutput> m_pingChannel;
222 std::shared_ptr<DigitalInput> m_echoChannel;
223 bool m_enabled =
false;
225 DistanceUnit m_units;
WPILib FRC namespace.
Definition: SPIAccelerometerSim.h:18
void SetDistanceUnits(DistanceUnit units)
Set the current DistanceUnit that should be used for the PIDSource base object.
void SetPIDSourceType(PIDSourceType pidSource) override
Set which parameter you are using as a process control variable.
PIDSource interface is a generic sensor source for the PID class.
Definition: PIDSource.h:20
Class for counting the number of ticks on a digital input channel.
Definition: Counter.h:34
Ultrasonic(int pingChannel, int echoChannel, DistanceUnit units=kInches)
Create an instance of the Ultrasonic Sensor.
double GetRangeMM() const
Get the range in millimeters from the ultrasonic sensor.
bool IsRangeValid() const
Check if there is a valid range measurement.
DistanceUnit GetDistanceUnits() const
Get the current DistanceUnit that is used for the PIDSource base object.
void InitSendable(SendableBuilder &builder) override
Initializes this Sendable object.
static void SetAutomaticMode(bool enabling)
Turn Automatic mode on/off.
Base class for most objects.
Definition: ErrorBase.h:74
Definition: SendableBase.h:19
Class to write to digital outputs.
Definition: DigitalOutput.h:24
double GetRangeInches() const
Get the range in inches from the ultrasonic sensor.
Definition: SendableBuilder.h:23
double PIDGet() override
Get the range in the current DistanceUnit for the PIDSource base object.
void Ping()
Single ping to ultrasonic sensor.
Ultrasonic rangefinder class.
Definition: Ultrasonic.h:37