106 lines
4.5 KiB
Java
106 lines
4.5 KiB
Java
/* Copyright (c) 2017 FIRST. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted (subject to the limitations in the disclaimer below) provided that
|
|
* the following conditions are met:
|
|
*
|
|
* Redistributions of source code must retain the above copyright notice, this list
|
|
* of conditions and the following disclaimer.
|
|
*
|
|
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
* list of conditions and the following disclaimer in the documentation and/or
|
|
* other materials provided with the distribution.
|
|
*
|
|
* Neither the name of FIRST nor the names of its contributors may be used to endorse or
|
|
* promote products derived from this software without specific prior written permission.
|
|
*
|
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS
|
|
* LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
package org.firstinspires.ftc.robotcontroller.external.samples;
|
|
|
|
import com.qualcomm.robotcore.hardware.DcMotor;
|
|
import com.qualcomm.robotcore.hardware.HardwareMap;
|
|
import com.qualcomm.robotcore.hardware.Servo;
|
|
import com.qualcomm.robotcore.util.ElapsedTime;
|
|
|
|
/**
|
|
* This is NOT an opmode.
|
|
*
|
|
* This class can be used to define all the specific hardware for a single robot.
|
|
* In this case that robot is a Pushbot.
|
|
* See PushbotTeleopTank_Iterative and others classes starting with "Pushbot" for usage examples.
|
|
*
|
|
* This hardware class assumes the following device names have been configured on the robot:
|
|
* Note: All names are lower case and some have single spaces between words.
|
|
*
|
|
* Motor channel: Left drive motor: "left_drive"
|
|
* Motor channel: Right drive motor: "right_drive"
|
|
* Motor channel: Manipulator drive motor: "left_arm"
|
|
* Servo channel: Servo to open left claw: "left_hand"
|
|
* Servo channel: Servo to open right claw: "right_hand"
|
|
*/
|
|
public class HardwarePushbot
|
|
{
|
|
/* Public OpMode members. */
|
|
public DcMotor leftDrive = null;
|
|
public DcMotor rightDrive = null;
|
|
public DcMotor leftArm = null;
|
|
public Servo leftClaw = null;
|
|
public Servo rightClaw = null;
|
|
|
|
public static final double MID_SERVO = 0.5 ;
|
|
public static final double ARM_UP_POWER = 0.45 ;
|
|
public static final double ARM_DOWN_POWER = -0.45 ;
|
|
|
|
/* local OpMode members. */
|
|
HardwareMap hwMap = null;
|
|
private ElapsedTime period = new ElapsedTime();
|
|
|
|
/* Constructor */
|
|
public HardwarePushbot(){
|
|
|
|
}
|
|
|
|
/* Initialize standard Hardware interfaces */
|
|
public void init(HardwareMap ahwMap) {
|
|
// Save reference to Hardware map
|
|
hwMap = ahwMap;
|
|
|
|
// Define and Initialize Motors
|
|
leftDrive = hwMap.get(DcMotor.class, "left_drive");
|
|
rightDrive = hwMap.get(DcMotor.class, "right_drive");
|
|
leftArm = hwMap.get(DcMotor.class, "left_arm");
|
|
leftDrive.setDirection(DcMotor.Direction.FORWARD); // Set to REVERSE if using AndyMark motors
|
|
rightDrive.setDirection(DcMotor.Direction.REVERSE);// Set to FORWARD if using AndyMark motors
|
|
|
|
// Set all motors to zero power
|
|
leftDrive.setPower(0);
|
|
rightDrive.setPower(0);
|
|
leftArm.setPower(0);
|
|
|
|
// Set all motors to run without encoders.
|
|
// May want to use RUN_USING_ENCODERS if encoders are installed.
|
|
leftDrive.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
|
rightDrive.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
|
leftArm.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
|
|
|
// Define and initialize ALL installed servos.
|
|
leftClaw = hwMap.get(Servo.class, "left_hand");
|
|
rightClaw = hwMap.get(Servo.class, "right_hand");
|
|
leftClaw.setPosition(MID_SERVO);
|
|
rightClaw.setPosition(MID_SERVO);
|
|
}
|
|
}
|
|
|