Entradas digitales - Software
Nota
Esta sección cubre entradas digitales en software. Para obtener una guía de hardware para entradas digitales, consulte Entradas digitales - Hardware.
The roboRIO’s FPGA supports up to 26 digital inputs. 10 of these are made available through the built-in DIO ports on the RIO itself, while the other 16 are available through the MXP breakout port.
Digital inputs read one of two states - «high» or «low.» By default, the built-in ports on the RIO will read «high» due to internal pull-up resistors (for more information, see Entradas digitales - Hardware). Accordingly, digital inputs are most-commonly used with switches of some sort. Support for this usage is provided through the DigitalInput
class (Java, C++).
La clase DigitalInput
Una entrada digital DigitalInput
se puede inicializar de la siguiente manera:
// Initializes a DigitalInput on DIO 0
DigitalInput m_input = new DigitalInput(0);
// Initializes a DigitalInput on DIO 0
frc::DigitalInput m_input{0};
Leyendo el valor de DigitalInput
El estado de DigitalInput
se puede consultar con el método get
:
// Gets the value of the digital input. Returns true if the circuit is open.
m_input.get();
// Gets the value of the digital input. Returns true if the circuit is
// open.
m_input.Get();
Crear una DigitalInput a partir de un AnalogInput.
Nota
Un AnalogTrigger
construido con un argumento de número de puerto puede compartir ese puerto analógico con un AnalogInput
separado, pero dos objetos` AnalogInput `pueden no compartir el mismo puerto.
Sometimes, it is desirable to use an analog input as a digital input. This can be easily achieved using the AnalogTrigger
class (Java, C++).
Un AnalogTrigger
disparador análogo puede iniciarse como sigue. Al igual que con el AnalogPotentiometer
, un AnalogInput
se puede pasar una Entrada Analógica explícitamente si el usuario desea personalizar la configuración de muestreo:
// Initializes an AnalogTrigger on port 0
AnalogTrigger m_trigger0 = new AnalogTrigger(0);
// Initializes an AnalogInput on port 1 and enables 2-bit oversampling
AnalogInput m_input = new AnalogInput(1);
// Initializes an AnalogTrigger using the above input
AnalogTrigger m_trigger1 = new AnalogTrigger(m_input);
// Initializes an AnalogTrigger on port 0
frc::AnalogTrigger trigger0{0};
// Initializes an AnalogInput on port 1
frc::AnalogInput input{1};
// Initializes an AnalogTrigger using the above input
frc::AnalogTrigger trigger1{input};
Estableciendo los puntos del gatillo
Nota
Para obtener detalles sobre la escala de los valores de AnalogInput
«sin procesar», consulte Entradas análogas - Software.
Para convertir la señal analógica a digital, es necesario especificar a qué valores habilitará y deshabilitará el disparador. Estos valores pueden ser diferentes para evitar «dithering» alrededor del punto de transición:
// Enables 2-bit oversampling
m_input.setAverageBits(2);
// Sets the trigger to enable at a raw value of 3500, and disable at a value of 1000
m_trigger0.setLimitsRaw(1000, 3500);
// Sets the trigger to enable at a voltage of 4 volts, and disable at a value of 1.5 volts
m_trigger0.setLimitsVoltage(1.5, 4);
// Enables 2-bit oversampling
input.SetAverageBits(2);
// Sets the trigger to enable at a raw value of 3500, and disable at a value
// of 1000
trigger0.SetLimitsRaw(1000, 3500);
// Sets the trigger to enable at a voltage of 4 volts, and disable at a
// value of 1.5 volts
trigger0.SetLimitsVoltage(1.5, 4);
Uso de entradas digitales en el código
As almost all switches on the robot will be used through a DigitalInput
. This class is extremely important for effective robot control.
Limitar el rango de movimiento de un mecanismo
Nearly all motorized mechanisms (such as arms and elevators) in FRC® should be given some form of «limit switch» to prevent them from damaging themselves at the end of their range of motions. For an example of this, see Programación de interruptores de límite.
Dirigiendo un mecanismo
Limit switches are very important for being able to «home» a mechanism with an encoder. For an example of this, see Homing a Mechanism.