#!/usr/bin/env python3 # # Copyright (c) FIRST and other WPILib contributors. # Open Source Software; you can modify and/or share it under the terms of # the WPILib BSD license file in the root directory of this project. # import wpilib class MyRobot(wpilib.TimedRobot): def __init__(self): """ This function is called upon program startup and should be used for any initialization code. """ super().__init__() self.leftDrive = wpilib.PWMSparkMax(0) self.rightDrive = wpilib.PWMSparkMax(1) self.robotDrive = wpilib.DifferentialDrive(self.leftDrive, self.rightDrive) self.controller = wpilib.Gamepad(0) self.timer = wpilib.Timer() # We need to invert one side of the drivetrain so that positive voltages # result in both sides moving forward. Depending on how your robot's # gearbox is constructed, you might have to invert the left side instead. self.rightDrive.setInverted(True) def autonomousInit(self): """This function is run once each time the robot enters autonomous mode.""" self.timer.restart() def autonomousPeriodic(self): """This function is called periodically during autonomous.""" # Drive for two seconds if self.timer.get() < 2.0: # Drive forwards half velocity, make sure to turn input squaring off self.robotDrive.arcadeDrive(0.5, 0, squareInputs=False) else: self.robotDrive.stopMotor() # Stop robot def teleopInit(self): """This function is called once each time the robot enters teleoperated mode.""" def teleopPeriodic(self): """This function is called periodically during teleoperated mode.""" self.robotDrive.arcadeDrive( -self.controller.getLeftY(), -self.controller.getRightX() ) def utilityInit(self): """This function is called once each time the robot enters utility mode.""" def utilityPeriodic(self): """This function is called periodically during utility mode."""