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