Light
The Light sensor, also known as the Reflection sensor, returns values ranging between 0 and 4095. 0 is the lightest reading and 4095 is the darkest.
#pragma config(Sensor, in1, lightSensor, sensorReflection)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
task main
{
wait1Msec(2000); // wait 2 seconds before exectuing following code
bMotorReflected[port2] = true; // reflects direction of motor on port 2
while(true) // infinite loop:
{
clearLCDLine(0); // clear the top VEX LCD line
clearLCDLine(1); // clear the bottom VEX LCD line
setLCDPosition(0,0); // set the VEX LCD cursor the first line, first space
displayNextLCDString("Light Sensor:"); // display "Light Sensor:" on the top line
setLCDPosition(1,0); // set the VEX LCD cursor the second line, first space
displayNextLCDNumber(SensorValue(lightSensor)); // display the reading of the lightSensor sensor
wait1Msec(50); // wait 50 milliseconds to help display properly
}
}
|
|
Potentiometer
Returns an analog value between 0 and 4095 (although mechanical stops my limit the values to between 5 and 4092).
#pragma config(Sensor, in1, potentiometer, sensorPotentiometer)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
task main
{
wait1Msec(2000); // wait 2 seconds before exectuing following code
bMotorReflected[port2] = true; // reflects direction of motor on port 2
while(true) // infinite loop:
{
clearLCDLine(0); // clear the top VEX LCD line
clearLCDLine(1); // clear the bottom VEX LCD line
setLCDPosition(0,0); // set the VEX LCD cursor the first line, first space
displayNextLCDString("Potentiometer:"); // display "Potentiometer:" on the top line
setLCDPosition(1,0); // set the VEX LCD cursor the second line, first space
displayNextLCDNumber(SensorValue(potentiometer)); // display the reading of the potentiometer sensor
wait1Msec(50); // wait 50 milliseconds to help display properly
}
}
|
|
Gyro
As the Gyro is turned, the values it returns are in tenths of degrees, positive and negative. Thus, a SensorValue of 3600 equals 360 degrees, or one full rotation. When the sensor is mounted horizontally, counter-clockwise movements will return values from 0 to -3600; clockwise movements will return values from 0 to 3600. Once the gyro completes one full revolution, the sensor value will “roll-over” to 0 by default (for example: …3597, 3598, 3599, 3600, 0, 1, 2, 3,…). To change the “roll-over” point, un-comment line 33 (from the code below) and change the value of “SensorFullCount” from 3600 to the desired value (7200, 18000, ect)
#pragma config(Motor, port2, rightMotor, tmotorNormal, openLoop)
#pragma config(Motor, port3, leftMotor, tmotorNormal, openLoop, reversed)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
/*+++++++++++++++++++++++++++++++++++++++++++++| Notes |++++++++++++++++++++++++++++++++++++++++++++
Gyro Based Turns - Basic
-This program instructs your robot to turn for the specified number of degrees in "degrees10".
-For best sensor results, clear out the gyro and manually configure it at the begging of the code.
-The Gyro is configured by default to provide values from 0 to -3600 for clockwise rotation,
and 0 to 3600 for counter-clockwise rotation
Robot Model(s): Swervebot
[I/O Port] [Name] [Type] [Description]
Motor Port 2 rightMotor VEX Motor Right side motor
Motor Port 3 leftMotor VEX Motor Left side motor
Analog Port 8 in8 VEX Gyro Top-center mounted,
away from the Cortex
--------------------------------------------------------------------------------------------------*/
task main()
{
//Completely clear out any previous sensor readings by setting the port to "sensorNone"
SensorType[in8] = sensorNone;
wait1Msec(1000);
//Reconfigure Analog Port 8 as a Gyro sensor and allow time for ROBOTC to calibrate it
SensorType[in8] = sensorGyro;
wait1Msec(2000);
//Adjust SensorScale to correct the scaling for your gyro
//SensorScale[in8] = 260;
//Adjust SensorFullCount to set the "rollover" point. 3600 sets the rollover point to +/-3600
//SensorFullCount[in8] = 3600;
//Specify the number of degrees for the robot to turn (1 degree = 10, or 900 = 90 degrees)
int degrees10 = 900;
//While the absolute value of the gyro is less than the desired rotation...
while(abs(SensorValue[in8]) < degrees10)
{
//...continue turning
motor[rightMotor] = 25;
motor[leftMotor] = -25;
}
//Brief brake to stop some drift
motor[rightMotor] = -5;
motor[leftMotor] = 5;
wait1Msec(250);
}
|
|
Accelerometer
Returns an analog value between 0 and 4095. Each Accelerometer Sensor has 3 cables, X, Y, and Z. The ports you attach them to don't have to be in any particular order (however you WILL need to use 3 ports).
#pragma config(Sensor, in1, xAxis, sensorAccelerometer)
#pragma config(Sensor, in2, yAxis, sensorAccelerometer)
#pragma config(Sensor, in3, zAxis, sensorAccelerometer)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
task main
{
int nBiasValues[3];
int X_Accel;
int Y_Accel;
int Z_Accel;
wait1Msec(500); // bias values are being calculated
/* store the bias values in an array so that they can be
* displayed in the ROBOTC global variables debug window */
nBiasValues[0] = SensorBias[xAxis];
nBiasValues[1] = SensorBias[yAxis];
nBiasValues[2] = SensorBias[zAxis];
while(true)
{
/* also store the actual sensor values so that they can be
* easily displayed in the ROBOTC global variables debug window */
X_Accel = SensorValue[xAxis];
Y_Accel = SensorValue[yAxis];
Z_Accel = SensorValue[zAxis];
wait1Msec(100);
}
}
|
|