mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
Add DutyCycleEncoder channel constructor (#2158)
Avoids extra boilerplate at user level.
This commit is contained in:
committed by
Peter Johnson
parent
d8f11eb149
commit
67d2fed685
@@ -8,6 +8,7 @@
|
||||
#include "frc/DutyCycleEncoder.h"
|
||||
|
||||
#include "frc/Counter.h"
|
||||
#include "frc/DigitalInput.h"
|
||||
#include "frc/DigitalSource.h"
|
||||
#include "frc/DriverStation.h"
|
||||
#include "frc/DutyCycle.h"
|
||||
@@ -15,6 +16,12 @@
|
||||
|
||||
using namespace frc;
|
||||
|
||||
DutyCycleEncoder::DutyCycleEncoder(int channel)
|
||||
: m_dutyCycle{std::make_shared<DutyCycle>(
|
||||
std::make_shared<DigitalInput>(channel))},
|
||||
m_analogTrigger{m_dutyCycle.get()},
|
||||
m_counter{} {}
|
||||
|
||||
DutyCycleEncoder::DutyCycleEncoder(DutyCycle& dutyCycle)
|
||||
: m_dutyCycle{&dutyCycle, NullDeleter<DutyCycle>{}},
|
||||
m_analogTrigger{m_dutyCycle.get()},
|
||||
|
||||
@@ -32,6 +32,13 @@ class DutyCycleEncoder : public ErrorBase,
|
||||
public Sendable,
|
||||
public SendableHelper<DutyCycleEncoder> {
|
||||
public:
|
||||
/**
|
||||
* Construct a new DutyCycleEncoder on a specific channel.
|
||||
*
|
||||
* @param channel the channel to attach to
|
||||
*/
|
||||
explicit DutyCycleEncoder(int channel);
|
||||
|
||||
/**
|
||||
* Construct a new DutyCycleEncoder attached to an existing DutyCycle object.
|
||||
*
|
||||
|
||||
@@ -5,17 +5,13 @@
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <frc/DigitalInput.h>
|
||||
#include <frc/DutyCycle.h>
|
||||
#include <frc/DutyCycleEncoder.h>
|
||||
#include <frc/TimedRobot.h>
|
||||
#include <frc/smartdashboard/SmartDashboard.h>
|
||||
|
||||
class Robot : public frc::TimedRobot {
|
||||
frc::DigitalInput m_input{0}; // Input channel
|
||||
|
||||
// Duty cycle encoder
|
||||
frc::DutyCycleEncoder m_dutyCycleEncoder{m_input};
|
||||
// Duty cycle encoder on channel 0
|
||||
frc::DutyCycleEncoder m_dutyCycleEncoder{0};
|
||||
|
||||
public:
|
||||
void RobotInit() override {
|
||||
|
||||
@@ -33,6 +33,16 @@ public class DutyCycleEncoder implements Sendable, AutoCloseable {
|
||||
protected SimDouble m_simPosition;
|
||||
protected SimBoolean m_simIsConnected;
|
||||
|
||||
/**
|
||||
* Construct a new DutyCycleEncoder on a specific channel.
|
||||
*
|
||||
* @param channel the channel to attach to
|
||||
*/
|
||||
public DutyCycleEncoder(int channel) {
|
||||
m_dutyCycle = new DutyCycle(new DigitalInput(channel));
|
||||
init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new DutyCycleEncoder attached to an existing DutyCycle object.
|
||||
*
|
||||
|
||||
@@ -7,20 +7,17 @@
|
||||
|
||||
package edu.wpi.first.wpilibj.examples.dutycycleencoder;
|
||||
|
||||
import edu.wpi.first.wpilibj.DigitalInput;
|
||||
import edu.wpi.first.wpilibj.DutyCycleEncoder;
|
||||
import edu.wpi.first.wpilibj.TimedRobot;
|
||||
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
|
||||
|
||||
@SuppressWarnings({"PMD.SingularField"})
|
||||
public class Robot extends TimedRobot {
|
||||
private DigitalInput m_input;
|
||||
private DutyCycleEncoder m_dutyCycleEncoder;
|
||||
|
||||
@Override
|
||||
public void robotInit() {
|
||||
m_input = new DigitalInput(0);
|
||||
m_dutyCycleEncoder = new DutyCycleEncoder(m_input);
|
||||
m_dutyCycleEncoder = new DutyCycleEncoder(0);
|
||||
|
||||
// Set to 0.5 units per rotation
|
||||
m_dutyCycleEncoder.setDistancePerRotation(0.5);
|
||||
|
||||
Reference in New Issue
Block a user