Difference between revisions of "Tutorials/Using Fischertechnik Sensors with the VEX Cortex"

From ROBOTC API Guide
Jump to: navigation, search
 
(13 intermediate revisions by one user not shown)
Line 1: Line 1:
 
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
 
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
<yambe:breadcrumb self="VEX Speaker module">Tutorials|Tutorials</yambe:breadcrumb>
+
<yambe:breadcrumb self="Using Fischertechnik Sensors with the VEX Cortex">Tutorials|Tutorials</yambe:breadcrumb>
 
<br />
 
<br />
  
Line 17: Line 17:
 
|-
 
|-
 
|colspan="2"|All of the basic Fischertechnik sensors meet these qualifying characteristics, making them perfect candidates for use with the VEX Cortex!
 
|colspan="2"|All of the basic Fischertechnik sensors meet these qualifying characteristics, making them perfect candidates for use with the VEX Cortex!
 +
|}
 +
<br />
  
'''Analog Sensors Example: Fischertechnic Photoresistor'''
+
== Analog Sensors Example: Fischertechnic Photoresistor ==
 
+
{|width="740px"
Based on the [http://www.education.rec.ri.cmu.edu/products/teaching_robotc_cortex/reference/cortex_schematic.pdf VEX Cortex Schematic], the SIGNAL line in the ANALOG INPUTS bank is closest to the USB Port in the center of the Cortex, with the +5 VOLTS line next, and finally the GROUND line. The Fischertechnic analog sensors only have two output pins, and we’ll be connecting them to the SIGNAL and +5V lines.
+
|-
 +
|Based on the [[Media:Cortex schematic.pdf|VEX Cortex Schematic]], the SIGNAL line in the ANALOG INPUTS bank is closest to the USB Port in the center of the Cortex, with the +5 VOLTS line next, and finally the GROUND line. The Fischertechnic analog sensors only have two output pins, and we’ll be connecting them to the SIGNAL and +5V lines.
 
|-
 
|-
 
|colspan="2"|[[Image:tut_fischertechnik_2.png|left|Schematic]]
 
|colspan="2"|[[Image:tut_fischertechnik_2.png|left|Schematic]]
Line 26: Line 29:
 
|colspan="2"|In the picture below, we used the connector pins that come with the Fischertechnik system to connect the photoresistor to male-to-male jumper cables, which can be plugged directly into the Cortex. Note that with these basic analog sensors, polarity does not matter; it only matters that you use the SIGNAL and +5V lines on the Cortex.
 
|colspan="2"|In the picture below, we used the connector pins that come with the Fischertechnik system to connect the photoresistor to male-to-male jumper cables, which can be plugged directly into the Cortex. Note that with these basic analog sensors, polarity does not matter; it only matters that you use the SIGNAL and +5V lines on the Cortex.
 
|-
 
|-
|colspan="2"|[[Image:tut_fischertechnik_3.jpg|left|50%]]
+
|colspan="2"|[[Image:tut_fischertechnik_3.jpg|left|700px|Photoresistor]]
 
|-
 
|-
 
|colspan="2"|With the sensor properly connected, configuring it in ROBOTC is no more difficult than any of the official VEX sensors. In the Motors and Sensors Setup, on the VEX 2.0 Analog Sensors 1-8 tab, give the sensor a name and choose from Potentiometer, Light Sensor, or Line Follower for the sensor type. Any of these three types will work, as they are set up to return the raw A-to-D (Analog-to-Digital) values from the sensor. The Gyro and Accelerometer sensor types perform additional calculations on the raw sensor data, making them inappropriate choices for a basic analog sensor like the photoresistor. The VEX Light Sensor is the most similar to the Fischertechnik photoresistor, so it’s the logical choice.
 
|colspan="2"|With the sensor properly connected, configuring it in ROBOTC is no more difficult than any of the official VEX sensors. In the Motors and Sensors Setup, on the VEX 2.0 Analog Sensors 1-8 tab, give the sensor a name and choose from Potentiometer, Light Sensor, or Line Follower for the sensor type. Any of these three types will work, as they are set up to return the raw A-to-D (Analog-to-Digital) values from the sensor. The Gyro and Accelerometer sensor types perform additional calculations on the raw sensor data, making them inappropriate choices for a basic analog sensor like the photoresistor. The VEX Light Sensor is the most similar to the Fischertechnik photoresistor, so it’s the logical choice.
 
|-
 
|-
|colspan="2"|[[Image:tut_fischertechnik_4.png|left|thumb]]
+
|colspan="2"|[[Image:tut_fischertechnik_4.png|700px|left]]
 +
|-
 +
|colspan="2"|The values from the photoresistor can be used in your ROBOTC programs just like any of the other sensors – using the <span class="keywordB">SensorValue</span><span class="codePunc">[]</span> command. The ROBOTC Natural Language commands like <span class="keywordB">untilLight</span><span class="codePunc">()</span> and <span class="keywordB">untilDark</span><span class="codePunc">()</span> will also work!<br />
 +
<syntaxhighlight lang="ROBOTC">
 +
#pragma config(Sensor, in1,    FTPhotoresistor, sensorReflection)
 +
//*!!Code automatically generated by 'ROBOTC' configuration wizard              !!*//
 +
 +
task main()
 +
{
 +
  while(SensorValue[FTPhotoresistor] < 2000)
 +
  {
 +
    //Code
 +
  }
 +
}
 +
</syntaxhighlight>
 +
|-
 +
|colspan="2"|Also, just like any of the official sensors, the value from the Fischertechnik sensors will appear in the ROBOTC Sensors Debug window!
 +
|-
 +
|[[Image:tut_fischertechnik_9.png|left|Sensor Debug - FTPhotoresistor]]
 
|}
 
|}
 
<br />
 
<br />
  
 
+
== Digital Sensors Example: Fischertechnic Touch Sensor ==
== Example Code ==
+
{|width="740px"
<span class="wikiHeader">Sound Test:</span>
+
|-
<br />
+
|Unlike the photoresistor, the touch sensor has three pins and we’ll need to be careful about how we plug them into the Cortex. We’ll need to plug the pin labeled 1 into the GROUND line on the Cortex, the pin labeled 2 into the SIGNAL line, and the pin labeled 3 into the +5V line. Failure to do so can result in the sensor always reading 1, always reading 0, or having the values reversed (0 = pushed, 1 = not pushed).
 +
|-
 +
|colspan="2"|[[Image:tut_fischertechnik_5.jpg|left|700px|Touch Sensor Closeup]]
 +
|-
 +
|colspan="2"|Below is a picture of the sensor connected to the Cortex. Note that all three lines are used, and that the Fischertechnik connectors were again used to connect the sensor to jumper cables.
 +
|-
 +
|colspan="2"|[[Image:tut_fischertechnik_6.jpg|left|700px|Touch Sensor]]
 +
|-
 +
|colspan="2"|The Fischertechnik touch sensor can be configured as a Touch Sensor or Digital Input in the ROBOTC Motors and Sensors Setup window.
 +
|-
 +
|colspan="2"|[[Image:tut_fischertechnik_7.png|700px|left]]
 +
|-
 +
|colspan="2"|The values from the digital touch sensor can be used in your ROBOTC programs just like any of the other sensors – using the <span class="keywordB">SensorValue</span><span class="codePunc">[]</span> command. The ROBOTC Natural Language commands like <span class="keywordB">untilLight<span class="codePunc">()</span> and <span class="keywordB">untilDark<span class="codePunc">()</span> will also work!<br />
 
<syntaxhighlight lang="ROBOTC">
 
<syntaxhighlight lang="ROBOTC">
 +
#pragma config(Sensor, dgtl4,  FTTouch,        sensorDigitalIn)
 +
//*!!Code automatically generated by 'ROBOTC' configuration wizard              !!*//
 +
 
task main()
 
task main()
 
{
 
{
  //Basic "Play Sound" commands
+
   while(SensorValue[FTTouch] == 0)
  PlaySound(soundBeepBeep);
+
   {
  wait1Msec(200);
+
    //Code
+
   }
  //Intelligent "Play Sound" command
+
  //Delay until sound is done playing
+
  PlaySound(soundFastUpwardTones);
+
   while(bSoundActive)
+
  wait1Msec(1);
+
+
  //Play a tone:
+
  //First Parameter: Frequence in Hz
+
  //Second Parameter: Length to play in 1/100th of a seconds (50 = .5 seconds)
+
   PlayTone(440, 50);
+
  wait1Msec(500);
+
+
  //Play a Sound File (need to use the File Management to Upload First)
+
   PlaySoundFile("1.wav");
+
  wait1Msec(1000);
+
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
|-
 +
|colspan="2"|And the Sensor Debug window will display whether the sensor is pressed in or released:
 +
|-
 +
|[[Image:tut_fischertechnik_8.png|left|Sensor Debug - Digital]]
 +
|-
 +
|As you can see, connecting third-party sensors to the Cortex and making use of them in ROBOTC isn’t much more complicated than using any of the official sensors. Happy programming!
 +
|}
 
<br />
 
<br />

Latest revision as of 17:39, 7 May 2012

Tutorials → Using Fischertechnik Sensors with the VEX Cortex


VEX Speaker
The VEX Cortex is an incredibly powerful and versatile microcontroller. Part of what makes it so versatile is the basic 3-pin system (Power, Signal, Ground) it uses for inputs and outputs.

When coupled with a powerful programming language like ROBOTC, the VEX Cortex allows you to connect all types of third-party sensors (and actuators) with little or no effort. Taken from the VEX Wiki, any analog sensor can be connected to the Cortex as long as its characteristics align with the following:

  • Output voltage range: 0.0 v to 5.0 v.
  • Must not exceed -0.5v to +5.5v.

Likewise, any digital sensor can be directly connected to the Cortex as long as its characteristics align with the following:

  • Provides 0.0 to 0.6 volts for a low and 2.5 to 5.0 volts for a high.
  • Must not exceed -0.5v or +5.5v.
All of the basic Fischertechnik sensors meet these qualifying characteristics, making them perfect candidates for use with the VEX Cortex!


Analog Sensors Example: Fischertechnic Photoresistor

Based on the VEX Cortex Schematic, the SIGNAL line in the ANALOG INPUTS bank is closest to the USB Port in the center of the Cortex, with the +5 VOLTS line next, and finally the GROUND line. The Fischertechnic analog sensors only have two output pins, and we’ll be connecting them to the SIGNAL and +5V lines.
Schematic
In the picture below, we used the connector pins that come with the Fischertechnik system to connect the photoresistor to male-to-male jumper cables, which can be plugged directly into the Cortex. Note that with these basic analog sensors, polarity does not matter; it only matters that you use the SIGNAL and +5V lines on the Cortex.
Photoresistor
With the sensor properly connected, configuring it in ROBOTC is no more difficult than any of the official VEX sensors. In the Motors and Sensors Setup, on the VEX 2.0 Analog Sensors 1-8 tab, give the sensor a name and choose from Potentiometer, Light Sensor, or Line Follower for the sensor type. Any of these three types will work, as they are set up to return the raw A-to-D (Analog-to-Digital) values from the sensor. The Gyro and Accelerometer sensor types perform additional calculations on the raw sensor data, making them inappropriate choices for a basic analog sensor like the photoresistor. The VEX Light Sensor is the most similar to the Fischertechnik photoresistor, so it’s the logical choice.
Tut fischertechnik 4.png
The values from the photoresistor can be used in your ROBOTC programs just like any of the other sensors – using the SensorValue[] command. The ROBOTC Natural Language commands like untilLight() and untilDark() will also work!
#pragma config(Sensor, in1,    FTPhotoresistor, sensorReflection)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
  while(SensorValue[FTPhotoresistor] < 2000)
  {
    //Code
  }
}
Also, just like any of the official sensors, the value from the Fischertechnik sensors will appear in the ROBOTC Sensors Debug window!
Sensor Debug - FTPhotoresistor


Digital Sensors Example: Fischertechnic Touch Sensor

Unlike the photoresistor, the touch sensor has three pins and we’ll need to be careful about how we plug them into the Cortex. We’ll need to plug the pin labeled 1 into the GROUND line on the Cortex, the pin labeled 2 into the SIGNAL line, and the pin labeled 3 into the +5V line. Failure to do so can result in the sensor always reading 1, always reading 0, or having the values reversed (0 = pushed, 1 = not pushed).
Touch Sensor Closeup
Below is a picture of the sensor connected to the Cortex. Note that all three lines are used, and that the Fischertechnik connectors were again used to connect the sensor to jumper cables.
Touch Sensor
The Fischertechnik touch sensor can be configured as a Touch Sensor or Digital Input in the ROBOTC Motors and Sensors Setup window.
Tut fischertechnik 7.png
The values from the digital touch sensor can be used in your ROBOTC programs just like any of the other sensors – using the SensorValue[] command. The ROBOTC Natural Language commands like untilLight() and untilDark() will also work!
#pragma config(Sensor, dgtl4,  FTTouch,        sensorDigitalIn)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
  while(SensorValue[FTTouch] == 0)
  {
    //Code
  }
}
And the Sensor Debug window will display whether the sensor is pressed in or released:
Sensor Debug - Digital
As you can see, connecting third-party sensors to the Cortex and making use of them in ROBOTC isn’t much more complicated than using any of the official sensors. Happy programming!