# Application Examples

## Application Information

The REV Touch Sensor features an off-center button. Because this sensor requires a contact interface; the sensor must be mounted with regards to the location of the button and the object, or mechanism, intended to trigger the sensor.&#x20;

Common applications for the Touch Sensor, such as limit switches, require consideration for unconstrained, or twisting motion. Limit switches limit the range of motion for a mechanism. If the mechanism is not properly [constrained](https://docs.revrobotics.com/15mm/building-techniques/constraining-motion), there is a risk that the contact interface will not trigger the Touch Sensor.

### FTC Applications&#x20;

#### Configuring in the Control System&#x20;

Configure the Touch Sensor as "REV Touch Sensor" as shown in the image below.&#x20;

<figure><img src="/files/cDmyM5GrOJJyNNeCHZRH" alt=""><figcaption></figcaption></figure>

In this example, the Touch Sensor is configured on port one. It is touched on briefly in the[ Pinout Section ](/rev-crossover-products/sensors/touch-sensor/specs.md#pinout-and-schematic)that the Touch Sensor only sends a signal to the Control Hub through the n+1 communication channel. Because of this limitation, the Touch Sensor will only work when configured on the odd-numbered digital ports.&#x20;

#### Programming Applications&#x20;

The code blocks below give a basic example of how to use the Touch Sensor to limit the motion range of a motor using if/else logic. If the button is pressed then the motor stops. Otherwise, the motor is allowed to move.&#x20;

{% hint style="info" %}
To learn more about programming Touch Sensors check out Hello Robot for [Blocks ](https://docs.revrobotics.com/duo-control/hello-robot-blocks/part-1/programming-touch-sensors#touch-sensor-basics)and [OnBot Java](https://docs.revrobotics.com/duo-control/hello-robot-java/part-1/programming-touch-sensors)!
{% endhint %}

{% tabs %}
{% tab title="Blocks" %}

<figure><img src="/files/53wKFhUugzbBgtSIA3gY" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="OnBot Java" %}
{% hint style="info" %}
The code assumes the sensor has been named "test\_touch" and the motor has been named "test\_motor" in configuration.&#x20;
{% endhint %}

```java
import com.qualcomm.robotcore.eventloop.opmode.Disabled;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.TouchSensor;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;

@TeleOp

public class HelloRobot_TouchSensor extends LinearOpMode {
    TouchSensor test_touch;  // Touch sensor Object
    private DcMotor test_motor = null;
    private Servo test_servo = null;
    
    @Override
public void runOpMode() {
        test_motor = hardwareMap.get(DcMotor.class, "test_motor");
        test_touch = hardwareMap.get(TouchSensor.class, "test_touch");
        
        // Wait for the game to start (driver presses PLAY)
        waitForStart();
        
        // run until the end of the match (driver presses STOP)
        while (opModeIsActive()) {
        
            if (touchSensor.isPressed()){
                //Touch Sensor is pressed.
                test_motor.setPower(0);
                telemetry.addData("Touch Sensor", "Is Pressed");
            } else {
                //Touch Sensor is not pressed 
                test_motor.setPower(0.3);
                telemetry.addData("Touch Sensor", "Is Not Pressed");
                        }
        telemetry.update();
        }
    }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.revrobotics.com/rev-crossover-products/sensors/touch-sensor/application-examples.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
