|
|
| Line 158: |
Line 158: |
| | | | | | |
| | === Accelerometer === | | === Accelerometer === |
| | + | [[File:vex_accel.png]] |
| | + | <br /> |
| | + | 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)''. |
| | + | <br /> |
| | + | |
| | + | {| |
| | + | |- |
| | + | | |
| | + | <syntaxhighlight lang="ROBOTC"> |
| | + | #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); |
| | + | } |
| | + | } |
| | + | </syntaxhighlight> |
| | + | |- |
| | + | |} |
| | |- | | |- |
| | | | | | |
| For ROBOTC CORTEX Sensor functions, check out the CORTEX Sensor Functions page!
|
|
The VEX 2.0 Cortex is equipped with 20 sensor ports. There are 8 Analog Sensor Ports and 12 Digital Sensor Ports. Note that unlike the VEX - PIC microcontroller, all Analog sensors must be in Analog ports, while all Digital sensors must be in Digital ports.
There are a variety of functions and variables used for configuring these ports and accessing their values.
Configuring sensors can be complicated. ROBOTC has a built-in wizard that can be used to configure the VEX 2.0 Cortex sensors. The wizard contains a number of PC windows that allow you to set the following fields for the sensor:
- The variable name that you want to assign to the sensor. Using a name like “leftBumper” makes for a more readable program than 'dgtl3'!
- The port that the sensor is connected to.
- The type of sensor – touch, quadrature encoder, sonar, line follower, etc.
|
| There are 5 main types of Analog Sensors for the VEX CORTEX:
|
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
}
}
|
|
Line Follower
Returns values ranging between 0 and 4095. 0 is the lightest reading and 4095 is the darkest.
#pragma config(Sensor, in1, lineFollower, sensorLineFollower)
//*!!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:
{
if(SensorValue(lineFollower) < 950) // if the lineFollower sensor reads a value less than 950:
{
// turn left:
motor[port2] = 50; // motor on port 2 is run at power level 50
motor[port3] = 0; // motor on port 3 is stopped at power level 0
}
else // lineFollower sensor reads a value greater than or equal to 950:
{
motor[port2] = 0; // motor on port 2 is stopped at power level 0
motor[port3] = 50; // motor on port 3 is run at power level 50
}
}
}
|
|
Gyro
|
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);
}
}
|
|
|
|