-
Notifications
You must be signed in to change notification settings - Fork 3
AveragedSensor
Johan Vandegriff edited this page Dec 7, 2016
·
3 revisions
AveragedSensor takes an AnalogSensor and averages the last N values to get the current value. The act() method should be called exactly once every time through the loop, but getValue() can be called whenever you need the value. The isReady() method will return true if the sensor is done collecting the first N values. If the sensor is not ready, the value will not be accurate.
ftc/evlib/hardware/sensors/AveragedSensor.java
package ftc.evlib.hardware.sensors;
/**
* This file was made by the electronVolts, FTC team 7393
* Date Created: 3/16/16
*
* report the average of the last N values of a sensor as the value
*
* @see AnalogSensor
*/
public class AveragedSensor implements AnalogSensor {
private final AnalogSensor sensor;
private final double readings[];
private int index = 0;
private boolean ready = false;
private final int numReadings;
private double average = 0;
/**
* @param sensor the sensor to average
* @param numReadings the number of readings to average
*/
public AveragedSensor(AnalogSensor sensor, int numReadings) {
this.sensor = sensor;
this.numReadings = numReadings;
readings = new double[numReadings];
}
/**
* @return true once the first numReadings have been read
*/
public boolean isReady() {
return ready;
}
@Override
public Double getValue() {
return average;
}
/**
* read the sensor and update the average
*/
public void act() {
double reading = sensor.getValue();
readings[index] = reading;
index++;
if (index >= numReadings) {
index = 0;
ready = true;
}
if (ready) {
average = 0;
for (int i = 0; i < numReadings; i++) {
average += readings[i];
}
average /= numReadings;
} else {
average = reading;
}
}
}
This guide will step through the basics of how to set up OpModes using EVLib.
- Importing Into Your Project
- Sample Code
- Using EVLib Minimally
- Logging Example
- Robot Configuration
- Basic TeleOp Program
- Basic Autonomous Program
- Customizing StateMachineBuilder
- Servo Presets
- Adding Servos to the Configuration
- Adding Servos to TeleOp
- Adding Servos to Autonomous
- Vuforia and OpenCV Beacon Color Detection