Reading Data

After configuring the output of the sensor via I2C, you can unplug the sensor from the I2C port and connect it to analog or digital ports. How to configure and read from these analog and digital ports is detailed in this page.

Digital Reads

In the configuration screen, go to "Digital Devices," select "Digital Device," and name your digital pins. After activating the config, the following code can be used to read the digital values:

DigitalChannel pin0 = hardwareMap.digitalChannel.get("digital0");
DigitalChannel pin1 = hardwareMap.digitalChannel.get("digital1");

waitForStart();

while (opModeIsActive()) {
    telemetry.addData("digital 0", pin0.getState());
    telemetry.addData("digital 1", pin1.getState());
    telemetry.update();
}

Analog Reads

In the configuration screen, go to "Analog Inputs," select "Analog Input," and name your analog pin. After activating the config, the following code can be used to read the analog value:

AnalogInput pin0 = hardwareMap.analogInput.get("analog0");
AnalogInput pin1 = hardwareMap.analogInput.get("analog1");
 
waitForStart();
while (opModeIsActive()) {
    telemetry.addData("voltage 0", pin0.getVoltage());
    telemetry.addData("voltage 1", pin1.getVoltage());
    telemetry.update();
}

Scaling Analog Voltage

Analog voltages will always be from 0-3.3, but we can turn this into real distance units by scaling it:

double millimeters = pin0.getVoltage() / 3.3 * 4000;

The value 4000 assumes that our configuration code analog bounds went from 0-4000.

Bulk Reading

Individual digital/analog port reads still take time, but by utilizing bulk reads one can read every single non-i2c port on a hub in only 3-4ms. Here is the gm0 page on implementing bulk reads: https://gm0.org/en/latest/docs/software/tutorials/bulk-reads.html

Last updated