Quote:
Originally Posted by 414cnewq
The space after the D in : DriveDirectoinal is not a glitch. The : D was turning into  when I posted the comment.
|
Our team created something like this in Python last year. We call it a debounce button.
Code:
import wpilib
class Button:
'''Useful utility class for debouncing buttons'''
def __init__(self,joystick,buttonnum):
self.joystick=joystick
self.buttonnum=buttonnum
self.latest = 0
self.timer = wpilib.Timer()
def get(self):
'''Returns the value of the button. If the button is held down, then
True will only be returned once every 600ms'''
now = self.timer.getMsClock()
if(self.joystick.getRawButton(self.buttonnum)):
if (now-self.latest) > 600:
self.latest = now
return True
return False
Basically, create a separate class with a get method, and in the get method, if the current time - the last time it returned true is greater than 600ms, return true again or else return false. The problem with just having a method that multiplies the y value by -1 is if you hold the button down for longer than one cycle (20ms? ish) than it will reverse again, and the robot will go back and forth between reversed and not reversed. Having this timer helps a lot.