[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,56 @@
#
# 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
class Pneumatics(Subsystem):
"""Subsystem for managing the compressor, pressure sensor, etc."""
# External analog pressure sensor
# product-specific voltage->pressure conversion, see product manual
# in this case, 250(V/5)-25
# the scale parameter in the AnalogPotentiometer constructor is scaled from 1 instead of 5,
# so if r is the raw AnalogPotentiometer output, the pressure is 250r-25
kScale = 250.0
kOffset = -25.0
def __init__(self) -> None:
super().__init__()
self.pressureTransducer = wpilib.AnalogPotentiometer(
# the AnalogIn port
2,
self.kScale,
self.kOffset,
)
# Compressor connected to a PCM with a default CAN ID (0)
self.compressor = wpilib.Compressor(0, wpilib.PneumaticsModuleType.CTREPCM)
def getPressure(self) -> float:
"""Query the analog pressure sensor.
:returns: the measured pressure, in PSI
"""
# Get the pressure (in PSI) from an analog pressure sensor connected to the RIO.
return self.pressureTransducer.get()
def disableCompressorCommand(self) -> Command:
"""Disable the compressor closed-loop for as long as the command runs.
Structured this way as the compressor is enabled by default.
:returns: command
"""
return self.startEnd(
# Disable closed-loop mode on the compressor.
self.compressor.disable,
# Enable closed-loop mode based on the digital pressure switch connected to the
# PCM/PH.
# The switch is open when the pressure is over ~120 PSI.
self.compressor.enableDigital,
).withName("Compressor Disabled")