Sensors#

Touch Sensors - Same as motors, just different syntax.#

import com.qualcomm.robotcore.hardware.TouchSensor;

public TouchSensor touchSensor;

touchSensor = hardwareMap.get(TouchSensor.class, ("touchSensor"));

Distance Sensors#

import com.qualcomm.robotcore.hardware.DistanceSensor;

public DistanceSensor distance;

distance = hardwareMap.get(DistanceSensor.class, "name");

Color Sensors#

import com.qualcomm.robotcore.hardware.NormalizedColorSensor;
import com.qualcomm.robotcore.hardware.NormalizedRGBA;

NormalizedColorSensor colorSensor;

colorSensor = hardwareMap.get(NormalizedColorSensor.class, "name");

Example opMode SensorColor to use color sensors

IMU#

The IMU or Internal Measurement Unit, is a very useful tool to find the robot orientation

import com.qualcomm.hardware.bosch.BNO055IMU;
import com.qualcomm.hardware.bosch.JustLoggingAccelerationIntegrator;
public BNO055IMU imu;    //imu module inside expansion hub
public Orientation angles;     //imu uses these to find angles and classify them
public Acceleration gravity;    //Imu uses to get acceleration
BNO055IMU.Parameters parameters = new BNO055IMU.Parameters();
parameters.angleUnit = BNO055IMU.AngleUnit.DEGREES;
parameters.accelUnit = BNO055IMU.AccelUnit.METERS_PERSEC_PERSEC;
parameters.calibrationDataFile = "BNO055IMUCalibration.json"; // see the calibration sample opmode
parameters.loggingEnabled = true;
parameters.loggingTag = "IMU";
parameters.accelerationIntegrationAlgorithm = new JustLoggingAccelerationIntegrator();
imu = hardwareMap.get(BNO055IMU.class, "imu");
imu.initialize(parameters);
angles = imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
gravity = imu.getGravity();
imu.startAccelerationIntegration(new Position(), new Velocity(), 1000);

To get the heading, use angles.firstAngle for most control hub configurations. You might have to change this based on how your control hub is mounted.

Example opMode SensorBNO055IMU

Indicators#

Digital LED Indicators are a very good way to get feedback from your robot. It is helpful because it can show you what is happening inside the robot and code.

import com.qualcomm.robotcore.hardware.DigitalChannel;

public DigitalChannel red1;
public DigitalChannel green1;

This will follow the same pattern of all the sensors

red1 = hardwareMap.get(DigitalChannel.class, "red1");
green1 = hardwareMap.get(DigitalChannel.class, "green1");
red1.setMode(DigitalChannel.Mode.OUTPUT);//required to use indicators
green1.setMode(DigitalChannel.Mode.OUTPUT);

Call it in your code with green1.setState(false); red1.setState(true); or the inverse, setting green to true and red to false.

Built-in functions#

red1.setMode(DigitalChannel.Mode.OUTPUT);//required to use indicators
green1.setMode(DigitalChannel.Mode.OUTPUT);
green1.setState(false);
red.setState(true);
distance.getDistance(DistanceUnit.CM)//this is how you would call to get a distance, other options are MM, M, and INCHES
NormalizedRGBA color = colorSensor.getNormalizedColors();//this and the one below are how you get colors from the color sensors
Color.colorToHSV(color.toColor(), hsvValues);
touchSensor.isPressed()//will return true if it is pressed