[copybara] Import robotpy examples (#8608)

GitOrigin-RevId: 9ba4bc3040fa7e772f5a594039e78fc6c43d114e
This commit is contained in:
PJ Reiniger
2026-02-20 18:30:35 -05:00
committed by GitHub
parent 1806cd2d78
commit 8f9fc4d1b6
136 changed files with 8989 additions and 3 deletions

View File

@@ -0,0 +1,16 @@
#
# 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.
#
class IntakeConstants:
kMotorPort = 1
kPistonFwdChannel = 0
kPistonRevChannel = 1
kIntakeSpeed = 0.5
kJoystickIndex = 0

View File

@@ -0,0 +1,39 @@
#!/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
import constants
from subsystems.intake import Intake
class MyRobot(wpilib.TimedRobot):
"""The methods in this class are called automatically corresponding to each mode, as
described in the TimedRobot documentation. If you change the name of this class or the
package after creating this project, you must also update the Main.java file in the
project.
"""
def __init__(self) -> None:
super().__init__()
self.intake = Intake()
self.joystick = wpilib.Joystick(constants.kJoystickIndex)
def teleopPeriodic(self) -> None:
"""This function is called periodically during operator control."""
# Activate the intake while the trigger is held
if self.joystick.getTrigger():
self.intake.activate(constants.IntakeConstants.kIntakeSpeed)
else:
self.intake.activate(0)
# Toggle deploying the intake when the top button is pressed
if self.joystick.getTop():
if self.intake.isDeployed():
self.intake.retract()
else:
self.intake.deploy()

View File

@@ -0,0 +1,36 @@
#
# 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
from constants import IntakeConstants
class Intake:
def __init__(self) -> None:
self.motor = wpilib.PWMSparkMax(IntakeConstants.kMotorPort)
self.piston = wpilib.DoubleSolenoid(
0,
wpilib.PneumaticsModuleType.CTREPCM,
IntakeConstants.kPistonFwdChannel,
IntakeConstants.kPistonRevChannel,
)
def deploy(self) -> None:
self.piston.set(wpilib.DoubleSolenoid.Value.kForward)
def retract(self) -> None:
self.piston.set(wpilib.DoubleSolenoid.Value.kReverse)
self.motor.set(0) # turn off the motor
def activate(self, speed: float) -> None:
if self.isDeployed():
self.motor.set(speed)
else: # if piston isn't open, do nothing
self.motor.set(0)
def isDeployed(self) -> bool:
return self.piston.get() == wpilib.DoubleSolenoid.Value.kForward