[examples] Improve Pneumatics example coverage in Solenoid and RapidReactCmdBot examples (#4998)

This commit is contained in:
Starlight220
2023-07-04 07:23:18 +03:00
committed by GitHub
parent 6b5817836d
commit fffe6a7b9a
14 changed files with 393 additions and 73 deletions

View File

@@ -0,0 +1,61 @@
// 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.
#pragma once
#include <frc/AnalogPotentiometer.h>
#include <frc/Compressor.h>
#include <frc/DoubleSolenoid.h>
#include <frc/Joystick.h>
#include <frc/PneumaticsControlModule.h>
#include <frc/Solenoid.h>
#include <frc/TimedRobot.h>
/**
* This is a sample program showing the use of the solenoid classes during
* operator control.
*
* Three buttons from a joystick will be used to control two solenoids: One
* button to control the position of a single solenoid and the other two buttons
* to control a double solenoid.
*
* Single solenoids can either be on or off, such that the air diverted through
* them goes through either one channel or the other.
*
* Double solenoids have three states: Off, Forward, and Reverse. Forward and
* Reverse divert the air through the two channels and correspond to the on and
* off of a single solenoid, but a double solenoid can also be "off", where both
* channels are diverted to exhaust such that there is no pressure in either
* channel.
*
* Additionally, double solenoids take up two channels on your PCM whereas
* single solenoids only take a single channel.
*/
class Robot : public frc::TimedRobot {
public:
void RobotInit() override;
void TeleopPeriodic() override;
private:
frc::Joystick m_stick{0};
// Solenoid corresponds to a single solenoid.
// In this case, it's connected to channel 0 of a PH with the default CAN
// ID.
frc::Solenoid m_solenoid{frc::PneumaticsModuleType::REVPH, 0};
// DoubleSolenoid corresponds to a double solenoid.
// In this case, it's connected to channels 1 and 2 of a PH with the default
// CAN ID.
frc::DoubleSolenoid m_doubleSolenoid{frc::PneumaticsModuleType::REVPH, 1, 2};
// Compressor connected to a PH with a default CAN ID
frc::Compressor m_compressor{frc::PneumaticsModuleType::REVPH};
static constexpr int kSolenoidButton = 1;
static constexpr int kDoubleSolenoidForward = 2;
static constexpr int kDoubleSolenoidReverse = 3;
static constexpr int kCompressorButton = 4;
};