More tinkering

This commit is contained in:
Mike Silva 2026-01-25 09:10:19 -05:00
parent 22841bd370
commit 8981527cec
5 changed files with 111 additions and 37 deletions

View File

@ -1,8 +1,12 @@
# from .drivetrain import DriveTrain
from .agitator import Agitator
from .controller import XboxController
from .pigeon import Pigeon
from .gyro import Pigeon
from .intake import Intake
__all__ = [
"Agitator",
"Intake",
"Pigeon",
"XboxController",
]

24
components/agitator.py Normal file
View File

@ -0,0 +1,24 @@
import magicbot
from phoenix6.hardware import TalonFX
from phoenix6.configs.talon_fx_configs import TalonFXConfiguration
from phoenix6.signals import NeutralModeValue
from phoenix6.controls import VoltageOut
class Agitator:
motor: TalonFX
voltage = magicbot.will_reset_to(0.0)
def execute(self):
self.motor.set_control(VoltageOut(self.voltage))
def setup(self):
config = TalonFXConfiguration()
config.motor_output.neutral_mode = NeutralModeValue.BRAKE
self.motor.configurator.apply(config)
def spin(self):
self.voltage = 1.0
def stop(self):
self.voltage = 0.0

74
components/gyro.py Normal file
View File

@ -0,0 +1,74 @@
import math
from phoenix6.hardware.pigeon2 import Pigeon2
import navx
class Pigeon:
gyro: Pigeon2
def setup(self):
self.gyro.reset()
def execute(self):
pass
def yaw(self) -> float:
return self.gyro.get_yaw().value
def roll(self) -> float:
return self.gyro.get_roll().value
def pitch(self) -> float:
return self.gyro.get_pitch().value
def rotation2d(self):
return self.gyro.getRotation2d()
def degrees_per_second_ccw(self) -> float:
return self.gyro.get_angular_velocity_z_world().value
def radians_per_second_ccw(self) -> float:
return math.radians(self.degrees_per_second_ccw())
def set_yaw(self, angle):
self.gyro.set_yaw(angle)
class NavX:
gyro: navx.AHRS # Either navx.AHRS.create_spi() or navx.AHRS.create_i2c()
def setup(self):
self.gyro.reset()
def execute(self):
pass
def yaw(self) -> float:
return self.gyro.getYaw()
def roll(self) -> float:
return self.gyro.getRoll()
def pitch(self) -> float:
return self.gyro.getPitch()
def is_calibrating(self) -> bool:
return self.gyro.isCalibrating()
def is_connected(self) -> bool:
return self.gyro.isConnected()
def rotation2d(self):
return self.gyro.getRotation2d()
def rotation3d(self):
return self.gyro.getRotation3d()
def reset(self) -> None:
self.gyro.reset()
def fused_heading(self) -> float:
return self.gyro.getFusedHeading()
def zero_yaw(self) -> None:
self.gyro.zeroYaw()

View File

@ -11,13 +11,18 @@ class Intake:
voltage = magicbot.will_reset_to(0.0)
def execute(self):
motor_control = VoltageOut(self.voltage)
self.motor.set_control(motor_control)S
self.motor.set_control(VoltageOut(self.voltage))
def setup(self):
config = TalonFXConfiguration()
config.motor_output.neutral_mode = NeutralModeValue.BRAKE
self.motor.configurator.apply(config)
def extend(self):
pass # Implement extension logic here
def retract(self):
pass # Implement retraction logic here
def set_voltage(self, voltage: units.volts):
self.voltage = voltage

View File

@ -1,33 +0,0 @@
import math
from phoenix6.hardware.pigeon2 import Pigeon2
class Pigeon:
gyro: Pigeon2
def setup(self):
self.gyro.reset()
def execute(self):
pass
def yaw(self) -> float:
return self.gyro.get_yaw().value
def roll(self) -> float:
return self.gyro.get_roll().value
def pitch(self) -> float:
return self.gyro.get_pitch().value
def rotation2d(self):
return self.gyro.getRotation2d()
def degrees_per_second_ccw(self) -> float:
return self.gyro.get_angular_velocity_z_world().value
def getRadiansPerSecCCW(self) -> float:
return math.radians(self.degrees_per_second_ccw())
def set_yaw(self, angle):
self.gyro.set_yaw(angle)