I have basic driving functions and inputs programmed:
output.py
Code:
#Made by Sam Dodrill for Team 2412, WTFPL
from wpilib import Victor, Solenoid
import wpilib
import math
class Driver:
def __init__(self, FL, FR, RL = None, RR = None):
self.FLvictor = Victor(FL)
self.FRvictor = Victor(FR)
if RL != None and RR != None:become standard for the interpreter :)
self.RLvictor = Victor(RL)
self.RRvictor = Victor(RR)
self.fourWheel = True
def drive(self, speed):
self.FLvictor.Set(speed)
self.FRvictor.Set(-speed)
if fourWheel:
self.RLvictor.Set(speed)
self.RRvictor.Set(-speed)
def tankDrive(self, left, right):
self.FLvictor.Set(left)
self.FRvictor.Set(-right)
if fourWheel:
self.RLvictor.Set(left)
self.FRvictor.Set(-right)
def limit(self, n):
if n > 1:
return 1
elif n < -1:
return -1
else:
return n
def arcadeDrive(self, speed, direction):
left = speed - direction
right = speed + direction
maxi = max(left, right)
if maxi > 1:
left = left/maxi
right = right/maxi
left = limit(left)
right = limit(right)
self.tankDrive(left, right)
def holonomicDrive(self, power, slide, spin):
fl = power + slide + spin
fr = power - slide - spin
rl = power - slide + spin
rr = power + slide - spin
fl = limit(fl);
fr = limit(fr);
rl = limit(rl);
rr = limit(rr);
self.setSpeed(fl, fr, rl, rr)
def setSpeed(self, fl, fr, rl, rr):
self.FLvictor.Set(fl)
self.FRvictor.Set(-fr)
self.RLvictor.Set(rl)
self.RRvictor.Set(-rr)
def goLeft(self):
self.holonomicDrive(0, 0.5, 0)
def goRight(self):
self.holonomicDrive(0, -0.5, 0)
def goForward(self):
self.holonomicDrive(0.5, 0, 0)
def goBackward(self):
self.holonomicDrive(-0.5, 0, 0)
def turnLeft(self):
self.holonomicDrive(0, 0, -0.5)
def turnRight(self):
self.holonomicDrive(0, 0, 0.5)
def stop(self):
print("OH CRAP")
self.drive(0)
input.py:
Code:
#made by Sam Dodrill for team 2412, but you can use it too
import wpilib, math
class Attack3:
def __init__(self, port)
self.joy = wpilib.Joystick(port)
def getX(self):
return self.joy.GetRawAxis(2)
def getY(self):
return self.joy.GetRawAxis(1)
def getThrottle(self):
return self.joy.GetRawAxis(3)
def getTrigger(self):
return self.joy.GetRawButton(1)
def get2(self):
return self.joy.GetRawButton(2)
def get3(self):
return self.joy.GetRawButton(3)
def get4(self):
return self.joy.GetRawButton(4)
#yada yada yada, TODO: finish with all 11 buttons
def calcBuffer(self, n):
buffers = 0.2
if math.abs(n) < buffers:
n = 0
return n
class Xbox:
def __init__(self, port):
self.joy = wpilib.Joystick(port)
def getStick(self, n1, n2): #returns a list in the form of [x,y]
r = list()
r.append(calcBuffer(self.joy.GetRawAxis(n1)))
r.append(calcBuffer(self.joy.GetRawAxis(n2)))
return r
def getLeftStick(self):
return self.getStick(1,2)
def getRightStick(self):
return self.getStick(4,5)
def getButtons(self, n1, n2, n3, n4): #returns a list in the form of [b1, b2, b3, b4]
r = list()
r.append(self.joy.GetRawButton(n1))
r.append(self.joy.GetRawButton(n2))
r.append(self.joy.GetRawButton(n3))
r.append(self.joy.GetRawButton(n4))
return r
def getMainButtons(self): #returns [a,b,x,y]
return self.getButtons(1, 2, 3, 4)