VEX2 Sensors Overview

From ROBOTC API Guide
Revision as of 16:04, 15 February 2012 by Bfeher (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Main >> CORTEX >> Sensors Overview


For ROBOTC CORTEX Sensor functions, check out the CORTEX Sensor Functions page!



Touch Sensor

The NXT Touch Sensor has 2 states, pressed or unpressed. In code this is represented with a 1 for pressed, and a 0 for unpressed. There are no other states for this sensor. Below is a simple program that keeps your program from running until you press the Touch Sensor.
#pragma config(Sensor, S1,     touchSensor,         sensorTouch)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
  while(SensorValue(touchSensor) == 0)  // while the Touch Sensor is inactive (hasn't been pressed):
  {
    // DO NOTHING (wait for press)
  }
  while(SensorValue(touchSensor) == 1)  // while the Touch Sensor is active (pressed):
  {
    // DO NOTHING (wait for release)
  }
 
  // YOUR CODE GOES HERE
                                        // otherwise (the touch sensor has been activated [pressed] ):
  motor[motorB] = 75;                   /* run motors B and C forwards */
  motor[motorC] = 75;                   /* with a power level of 75    */
  wait1Msec(1000);                      // wait 1000 milliseconds (1 second) before moving to further code
}


Light Sensor

The NXT Light Sensor has a range of states between 0 and 100. The lower the number, the darker the reading is. The higher the number, the lighter the reading is. Below is a simple line-following program that uses only one NXT Light Sensor.
#pragma config(Sensor, S3,     lightSensor,         sensorLightActive)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
   wait1Msec(50);                        // The program waits 50 milliseconds to initialize the light sensor.
   while(true)                           // Infinite loop
   {
      if(SensorValue(lightSensor) < 45)  // If the Light Sensor reads a value less than 45:
      {
        motor[motorB] = 60;                  // Motor B is run at a 60 power level.
        motor[motorC] = 20;                  // Motor C is run at a 20 power level.
      }
      else                               // If the Light Sensor reads a value greater than or equal to 45:
      {
        motor[motorB] = 20;                  // Motor B is run at a 20 power level.
        motor[motorC] = 60;                  // Motor C is run at a 60 power level.
      }
   }
}


Sound Sensor

The NXT Sound Sensor has a range of states between 0 and 100. The lower the number, the quieter the reading is. The higher the number, the louder the reading is. Below is a simple program that maps the Sound Sensor reading to the motor speeds.
#pragma config(Sensor, S2,     soundSensor,         sensorSoundDB)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
  wait1Msec(1000);       // A one-second wait is required to cleanly initialize the Sound Sensor.
  while(true)            // Infinite loop
  {
    motor[motorB] = SensorValue[soundSensor];    /* Motors B and C are run at a power level equal */
    motor[motorC] = SensorValue[soundSensor];    /* to the value read in by the Sound Sensor.     */
  }
}


Ultrasonic (sonar) Sensor

The NXT Ultrasonic Sensor has a range of states between 0 and 255. This number is representative of the current reading in centimeters. However, a reading of 255 means that the current sensor reading is out of range. This is a "range error" and means that the echo is not being read back (looking down a long hall for example). A reading outside of these numbers indicates that there is no sensor attached or some error with the connection.
#pragma config(Sensor, S4,     sonarSensor,         sensorSONAR)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
  int distance_in_cm = 20;   // Create variable 'distance_in_cm' and initialize it to 20(cm).
  while(SensorValue[sonarSensor] > distance_in_cm)   /* While the Sonar Sensor readings are greater */
  }                                                  /* than the specified, 'distance_in_cm':       */
    motor[motorB] = 75;                     // Motor B is run at a 75 power level
    motor[motorC] = 75;                     // Motor C is run at a 75 power level
  }
  motor[motorB] = 75;    // Motor B is stopped at a 0 power level
  motor[motorC] = 75;    // Motor C is stopped at a 0 power level
}