Files
allwpilib/robotpyExamples/examples/RapidReactCommandBot/subsystems/intake.py
PJ Reiniger dca59147e1 [robotpy][examples] Split examples and snippets (#8944)
This also updates the bazel scripts to behave more like the C++ and Java
examples, and updates the copybara scripts to be able to sync up
`mostrobotpy`
2026-06-03 19:43:16 -07:00

44 lines
1.4 KiB
Python

#
# 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.
#
from commands2 import Command, Subsystem
import wpilib
from constants import IntakeConstants
class Intake(Subsystem):
def __init__(self) -> None:
super().__init__()
self.motor = wpilib.PWMSparkMax(IntakeConstants.kMotorPort)
# Double solenoid connected to two channels of a PCM with the default CAN ID
self.pistons = wpilib.DoubleSolenoid(
0,
wpilib.PneumaticsModuleType.CTRE_PCM,
IntakeConstants.kSolenoidPorts[0],
IntakeConstants.kSolenoidPorts[1],
)
def intakeCommand(self) -> Command:
"""Returns a command that deploys the intake, and then runs the intake motor
indefinitely.
"""
return (
self.runOnce(lambda: self.pistons.set(wpilib.DoubleSolenoid.Value.FORWARD))
.andThen(self.run(lambda: self.motor.set(1.0)))
.withName("Intake")
)
def retractCommand(self) -> Command:
"""Returns a command that turns off and retracts the intake."""
return self.runOnce(
lambda: (
self.motor.disable(),
self.pistons.set(wpilib.DoubleSolenoid.Value.REVERSE),
)
).withName("Retract")