模拟电位器-软件

注解

本节涵盖软件中的模拟电位计。有关模拟电位器的硬件指南,请参阅:ref:docs/hardware/sensors/analog-potentiometers-hardware:Analog Potentiometers - Hardware

电位计是可变电阻器,可将有关位置的信息转换为模拟电压信号。roboRIO可以读取此信号,以控制电位计上连接的任何设备。

虽然可以使用模拟输入软件直接从电位计读取信息,但是WPILib提供了一个AnalogPotentiometer类(Java, C++),该类可以将值重新缩放为对用户有意义的单位。强烈建议您使用此类。

实际上,这个AnalogPotentiometer名称用词不当-这类传感器应用于绝大多数以简单的线性比例模拟电压返回信号的传感器。

AnalogPotentiometer 类

注解

AnalogPotentiometer构造函数中的“全范围”或“范围”参数是从0-1的比例因子而不是从0-5的。也就是说,它们代表一个自然的小数位数,而不是电压等级。

可以通过以下方式初始化AnalogPotentiometer:

// Initializes an AnalogPotentiometer on analog port 0
// The full range of motion (in meaningful external units) is 0-180 (this could be degrees, for instance)
// The "starting point" of the motion, i.e. where the mechanism is located when the potentiometer reads 0v, is 30.

AnalogPotentiometer pot = new AnalogPotentiometer(0, 180, 30);

自定义底层模拟输入

注解

如果用户更改AnalogInput过采样的比例,则必须在传递给AnalogPotentiometer的比例设置中反映出来。

如果用户希望将自定义设置应用于AnalogInput所使用的基础AnalogPotentiometer,则可以使用AnalogInput注入的替代构造函数:

// Initializes an AnalogInput on port 0, and enables 2-bit averaging
AnalogInput input = new AnalogInput(0);
input.setAverageBits(2);

// Initializes an AnalogPotentiometer with the given AnalogInput
// The full range of motion (in meaningful external units) is 0-180 (this could be degrees, for instance)
// The "starting point" of the motion, i.e. where the mechanism is located when the potentiometer reads 0v, is 30.

AnalogPotentiometer pot = new AnalogPotentiometer(input, 180, 30);

从模拟电位计读取值

只需调用以下get方法即可读取缩放值:

pot.get();

在代码中使用模拟电位计

模拟传感器可以像其他测量同一物体的传感器那样大量地用于代码中。如果模拟传感器是测量臂角的电位计,则可以类似于编码器使用。如果是超声波传感器,则可以与其他超声波类似地使用。

重要的是要记住,实际的物理电位器通常具有有限的运动范围。物理机构和代码中均应有防护措施,以确保该机构不会超过传感器的最大行程而损坏传感器。