mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-03 03:01:44 +00:00
[wpilib] Pregenerate PWM motor controllers (#6742)
Co-authored-by: Gold856 <117957790+Gold856@users.noreply.github.com>
This commit is contained in:
48
wpilibj/src/generate/pwm_motor_controller.java.jinja
Normal file
48
wpilibj/src/generate/pwm_motor_controller.java.jinja
Normal file
@@ -0,0 +1,48 @@
|
||||
// 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.
|
||||
|
||||
// THIS FILE WAS AUTO-GENERATED BY ./wpilibj/generate_pwm_motor_controllers.py. DO NOT MODIFY
|
||||
|
||||
package edu.wpi.first.wpilibj.motorcontrol;
|
||||
|
||||
import edu.wpi.first.hal.FRCNetComm.tResourceType;
|
||||
import edu.wpi.first.hal.HAL;
|
||||
import edu.wpi.first.wpilibj.PWM;
|
||||
|
||||
/**
|
||||
* {{ Manufacturer }} {{ DisplayName }} Motor Controller.
|
||||
*
|
||||
* <p>Note that the {{ DisplayName }} uses the following bounds for PWM values. These values should work
|
||||
* reasonably well for most controllers, but if users experience issues such as asymmetric behavior
|
||||
* around the deadband or inability to saturate the controller in either direction, calibration is
|
||||
* recommended. The calibration procedure can be found in the {{ DisplayName }} User Manual available from
|
||||
* {{ Manufacturer }}.
|
||||
*
|
||||
* <ul>
|
||||
* <li>{{ "{:.3f}".format(pulse_width_ms.max) }}ms = full "forward"
|
||||
* <li>{{ "{:.3f}".format(pulse_width_ms.deadbandMax) }}ms = the "high end" of the deadband range
|
||||
* <li>{{ "{:.3f}".format(pulse_width_ms.center) }}ms = center of the deadband range (off)
|
||||
* <li>{{ "{:.3f}".format(pulse_width_ms.deadbandMin) }}ms = the "low end" of the deadband range
|
||||
* <li>{{ "{:.3f}".format(pulse_width_ms.min) }}ms = full "reverse"
|
||||
* </ul>
|
||||
*/
|
||||
public class {{ name }} extends PWMMotorController {
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param channel The PWM channel that the {{ DisplayName }} is attached to. 0-9 are on-board, 10-19
|
||||
* are on the MXP port
|
||||
*/
|
||||
@SuppressWarnings("this-escape")
|
||||
public {{ name }}(final int channel) {
|
||||
super("{{ name }}", channel);
|
||||
|
||||
m_pwm.setBoundsMicroseconds({{ (pulse_width_ms.max * 1000) | int }}, {{ (pulse_width_ms.deadbandMax * 1000) | int }}, {{ (pulse_width_ms.center * 1000) | int }}, {{ (pulse_width_ms.deadbandMin * 1000) | int }}, {{ (pulse_width_ms.min * 1000) | int }});
|
||||
m_pwm.setPeriodMultiplier(PWM.PeriodMultiplier.k{{ PeriodMultiplier | default("1", true)}}X);
|
||||
m_pwm.setSpeed(0.0);
|
||||
m_pwm.setZeroLatch();
|
||||
|
||||
HAL.report(tResourceType.kResourceType_{{ ResourceName }}, getChannel() + 1);
|
||||
}
|
||||
}
|
||||
172
wpilibj/src/generate/pwm_motor_controllers.json
Normal file
172
wpilibj/src/generate/pwm_motor_controllers.json
Normal file
@@ -0,0 +1,172 @@
|
||||
[
|
||||
{
|
||||
"name": "DMC60",
|
||||
"Manufacturer": "Digilent",
|
||||
"DisplayName": "DMC 60",
|
||||
"ResourceName": "DigilentDMC60",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.004,
|
||||
"deadbandMax": 1.520,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.480,
|
||||
"min": 0.997
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Jaguar",
|
||||
"Manufacturer": "Luminary Micro / Vex Robotics",
|
||||
"DisplayName": "Jaguar",
|
||||
"ResourceName": "Jaguar",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.310,
|
||||
"deadbandMax": 1.550,
|
||||
"center": 1.507,
|
||||
"deadbandMin": 1.454,
|
||||
"min": 0.697
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PWMSparkFlex",
|
||||
"Manufacturer": "REV Robotics",
|
||||
"DisplayName": "SPARK Flex",
|
||||
"ResourceName": "RevSparkFlexPWM",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.003,
|
||||
"deadbandMax": 1.550,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.460,
|
||||
"min": 0.999
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PWMSparkMax",
|
||||
"Manufacturer": "REV Robotics",
|
||||
"DisplayName": "SPARK MAX",
|
||||
"ResourceName": "RevSparkMaxPWM",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.003,
|
||||
"deadbandMax": 1.550,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.460,
|
||||
"min": 0.999
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PWMTalonFX",
|
||||
"Manufacturer": "Cross the Road Electronics (CTRE)",
|
||||
"DisplayName": "Talon FX",
|
||||
"ResourceName": "TalonFX",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.004,
|
||||
"deadbandMax": 1.520,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.480,
|
||||
"min": 0.997
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PWMTalonSRX",
|
||||
"Manufacturer": "Cross the Road Electronics (CTRE)",
|
||||
"DisplayName": "Talon SRX",
|
||||
"ResourceName": "PWMTalonSRX",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.004,
|
||||
"deadbandMax": 1.520,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.480,
|
||||
"min": 0.997
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PWMVenom",
|
||||
"Manufacturer": "Playing with Fusion",
|
||||
"DisplayName": "Venom",
|
||||
"ResourceName": "FusionVenom",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.004,
|
||||
"deadbandMax": 1.520,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.480,
|
||||
"min": 0.997
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PWMVictorSPX",
|
||||
"Manufacturer": "Cross the Road Electronics (CTRE)",
|
||||
"DisplayName": "Victor SPX",
|
||||
"ResourceName": "PWMVictorSPX",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.004,
|
||||
"deadbandMax": 1.520,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.480,
|
||||
"min": 0.997
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "SD540",
|
||||
"Manufacturer": "Mindsensors",
|
||||
"DisplayName": "SD540",
|
||||
"ResourceName": "MindsensorsSD540",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.05,
|
||||
"deadbandMax": 1.55,
|
||||
"center": 1.50,
|
||||
"deadbandMin": 1.44,
|
||||
"min": 0.94
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Spark",
|
||||
"Manufacturer": "REV Robotics",
|
||||
"DisplayName": "SPARK",
|
||||
"ResourceName": "RevSPARK",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.003,
|
||||
"deadbandMax": 1.550,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.460,
|
||||
"min": 0.999
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Talon",
|
||||
"Manufacturer": "Cross the Road Electronics (CTRE)",
|
||||
"DisplayName": "Talon",
|
||||
"ResourceName": "Talon",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.037,
|
||||
"deadbandMax": 1.539,
|
||||
"center": 1.513,
|
||||
"deadbandMin": 1.487,
|
||||
"min": 0.989
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Victor",
|
||||
"Manufacturer": "Vex Robotics",
|
||||
"DisplayName": "Victor 888",
|
||||
"ResourceName": "Victor",
|
||||
"PeriodMultiplier": 2,
|
||||
"pulse_width_ms": {
|
||||
"max": 2.027,
|
||||
"deadbandMax": 1.525,
|
||||
"center": 1.507,
|
||||
"deadbandMin": 1.490,
|
||||
"min": 1.026
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "VictorSP",
|
||||
"Manufacturer": "Vex Robotics",
|
||||
"DisplayName": "Victor SP",
|
||||
"ResourceName": "VictorSP",
|
||||
"pulse_width_ms": {
|
||||
"max": 2.004,
|
||||
"deadbandMax": 1.520,
|
||||
"center": 1.500,
|
||||
"deadbandMin": 1.480,
|
||||
"min": 0.997
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user