Source code for robotpy_ext.control.button_debouncer

import wpilib


[docs] class ButtonDebouncer: """Useful utility class for debouncing buttons""" def __init__(self, joystick, buttonnum, period=0.5): """ :param joystick: Joystick object :type joystick: :class:`wpilib.Joystick` :param buttonnum: Number of button to retrieve :type buttonnum: int :param period: Period of time (in seconds) to wait before allowing new button presses. Defaults to 0.5 seconds. :type period: float """ self.joystick = joystick self.buttonnum = buttonnum self.latest = 0 self.debounce_period = float(period) self.timer = wpilib.Timer
[docs] def set_debounce_period(self, period): """Set number of seconds to wait before returning True for the button again""" self.debounce_period = float(period)
[docs] def get(self): """Returns the value of the joystick button. If the button is held down, then True will only be returned once every ``debounce_period`` seconds""" now = self.timer.getFPGATimestamp() if self.joystick.getRawButton(self.buttonnum): if (now - self.latest) > self.debounce_period: self.latest = now return True return False
__bool__ = get