2015:Robot IO Map: Difference between revisions

From 1511Wookiee
Jump to navigationJump to search
(remove useless column; update controls to match state of code and driver whim)
 
(107 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<span id="can"></span>
= Robot I/O =


= CAN ID Assignments =
== CAN ID Assignments ==


NOTE: each of these should also have a line in the Robot Map [[2015:Robot Sensors/Motors/Lights/Controls Map#motors|Motor table]] (the "Robot Map Updated?" column in the following table indicates if this was done)
{| style="width: 908px" border="1" cellpadding="2" cellspacing="1"
|-
| style="text-align: center" | '''ID'''
| style="text-align: center" | '''Subsystem'''
| <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="text-align: center" | '''Model #'''
| style="width: 210px;  text-align: center" | '''Description'''<br/>(brief)
| style="width: 224px;  text-align: center" | '''Operation'''<br/>
| style="width: 115px;  text-align: center" | '''Notes'''
|-
| style="text-align: center" | 0
| style="text-align: center" | '''RESERVED'''
| <p style="text-align: center">n/a</p>
| style="text-align: center" | <br/>
| style="width: 210px;  text-align: center" | Factory-default<br/>allows for adding CTRE devices quickly and re-assign its ID
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px" | <p style="text-align: center">don't use</p>
|-
| style="text-align: center" | 1
| style="text-align: center" | '''RESERVED'''
| style="text-align: center" | n/a
| style="text-align: center" | <br/>
| style="width: 210px;  text-align: center" | Factory-default<br/>allows for adding Jaguar quickly and re-assign its ID
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" | don't use
|-
| style="text-align: center" | 2
| style="text-align: center" | drivetrain
| style="text-align: center" | motor
| style="text-align: center" | CIM
| style="width: 210px;  text-align: center" | Left Front Drive
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 3
| style="text-align: center" | drivetrain
| style="text-align: center" | motor
| style="text-align: center" | CIM
| style="width: 210px;  text-align: center" | Left Rear Drive
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 4
| style="text-align: center" | drivetrain
| style="text-align: center" | motor
| style="text-align: center" | CIM
| style="width: 210px;  text-align: center" | Right Front Drive
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 5
| style="text-align: center" | drivetrain
| style="text-align: center" | motor
| style="text-align: center" | CIM
| style="width: 210px;  text-align: center" | Right Rear Drive
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 6
| style="text-align: center" | drivetrain
| style="text-align: center" | motor
| style="text-align: center" | CIM
| style="width: 210px;  text-align: center" | Strafe
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" | unclear on how to activate this motor
|-
| style="text-align: center" | 7
| style="text-align: center" | lifter
| style="text-align: center" | motor
| style="text-align: center" | RS775
| style="width: 210px;  text-align: center" | Left lifter
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 8
| style="text-align: center" | lifter
| style="text-align: center" | motor
| style="text-align: center" | RS775
| style="width: 210px;  text-align: center" | Right lifter
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 9
| style="text-align: center" | gripper
| style="text-align: center" | motor
| style="text-align: center" | RS550
| style="width: 210px;  text-align: center" | Gripper/Motor
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" | <br/>
|-
| style="text-align: center" | 10
| style="text-align: center" | <br/>
| style="text-align: center" | <br/>
| style="text-align: center" | <br/>
| style="width: 210px;  text-align: center" | <br/>
| style="width: 224px;  text-align: center" | <br/>
| style="width: 115px;  text-align: center" |
|-
| style="text-align: center" | 11
| style="text-align: center" | <br/>
| style="text-align: center" | <br/>
| style="text-align: center" | <br/>
| style="width: 210px;  text-align: center" | <br/>
| style="width: 224px" | <br/>
| style="width: 115px" |
|-
| 12
|
| <br/>
| <br/>
| style="width: 210px" |
| style="width: 224px" | <br/>
| style="width: 115px" |
|-
| 13
|
| <br/>
| <br/>
| style="width: 210px" |
| style="width: 224px" | <br/>
| style="width: 115px" |
|-
| 14
|
| <br/>
| <br/>
| style="width: 210px" |
| style="width: 224px" | <br/>
| style="width: 115px" |
|-
| 15
| <span style="text-align: center">pnuematics</span>
| <span style="text-align: center">PCM module</span><br/>
| <span style="text-align: center">N/A</span><br/>
| style="width: 210px" | <span style="text-align: center">Stabilizer, Shifter, Strafing</span>
| style="width: 224px" | <br/>
| style="width: 115px" | address spaces for Jaguars, SRXs, PCM, and PDP are all separate. We are limited to one PDP, and will need only one PCM
|-
| 0
| <span style="text-align: center">power dist.</span>
| <span style="text-align: center">PD module</span><br/>
| <span style="text-align: center">N/A</span><br/>
| style="width: 210px" | <span style="text-align: center">Power Distribution Readback</span>
| style="width: 224px" | <br/>
| style="width: 115px" | Must be 0 (WPILib has no easy way to use another ID). We'll only ever have one
|}
 
== PWM Outputs ==


{| border="1" cellpadding="2" cellspacing="1"
{| style="width: 941px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| '''Subsystem'''
| style="width: 82px;  text-align: center" | '''Subsystem'''
| '''Description'''<br/>(brief)
| style="width: 76px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| '''Robot Map<br/>Updated?'''
| style="text-align: center;  width: 54px" | '''Model #'''
| style="text-align: center;  width: 170px" | '''Description<br/>(brief)'''
| style="text-align: center;  width: 280px" |
'''Operation'''
 
 
 
| style="width: 125px;  text-align: center" | '''Notes'''
|-
|-
| 0
| 0
| '''RESERVED'''
| style="width: 82px" |
| Factory-default<br/>allows for adding CTRE devices quickly and re-assign its ID
| style="width: 76px" | <br/>
| n/a
| style="width: 54px" | <br/>
| style="width: 170px" |
| style="width: 280px" | <br/>
| style="width: 125px" | <br/>
|-
|-
| 1
| 1
| '''RESERVED'''
| style="width: 82px" |
| Factory-default<br/>allows for adding Jaguar quickly and re-assign its ID
| style="width: 76px" | <br/>
| n/a
| style="width: 54px" | <br/>
| style="width: 170px" |
| style="width: 280px" | <br/>
| style="width: 125px" |
|-
|-
| 2
| 2
|  
| style="width: 82px" |
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" |  
| style="width: 280px" | <br/>
| style="width: 125px" |  
|-
|-
| 3
| 3
|  
| style="width: 82px" |
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" |  
| style="width: 280px" | <br/>
| style="width: 125px" |  
|-
|-
| 4
| 4
|  
| style="width: 82px" |
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" |  
| style="width: 280px" | <br/>
| style="width: 125px" |  
|-
|-
| 5
| 5
|
| style="width: 82px" |
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" |  
| style="width: 280px" | <br/>
| style="width: 125px" |  
|-
|-
| 6
| 6
|  
| style="width: 82px" | <br/>
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" | <br/>
| style="width: 280px" | <br/>
| style="width: 125px" | <br/>
|-
|-
| 7
| 7
|  
| style="width: 82px" | <br/>
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" | <br/>
| style="width: 280px" | <br/>
| style="width: 125px" | <br/>
|-
|-
| 8
| 8
|  
| style="width: 82px" |
|  
| style="width: 76px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 170px" |  
| style="width: 280px" | <br/>
| style="width: 125px" |  
|-
|-
| 9
| 9
| style="width: 82px" |
| style="width: 76px" | <br/>
| style="width: 54px" | <br/>
| style="width: 170px" |
| style="width: 280px" | <br/>
| style="width: 125px" |
|}
== Relay Outputs ==
{| style="width: 927px" border="1" cellpadding="2" cellspacing="1"
|-
| '''ID'''
| style="text-align: center" | '''Subsystem'''
| style="width: 69px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 54px;  text-align: center" | '''Model #'''
| style="width: 192px;  text-align: center" | '''Description<br/>(brief)'''
| style="width: 259px;  text-align: center" | '''Operation'''<br/>
| style="width: 115px;  text-align: center" | '''Notes'''
|-
| 0
|  
|  
| style="width: 69px" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px" |
| style="width: 259px" | <br/>
| style="width: 115px" |
|-
| 1
|  
|  
|  
| style="width: 69px" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px" |
| style="width: 259px" | <br/>
| style="width: 115px" |  
|-
|-
| 10
| 2
|
|
|  
|  
| style="width: 69px" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px" |
| style="width: 259px" | <br/>
| style="width: 115px" |
|-
|-
| 11
| 3
|
|
|  
|  
| style="width: 69px" | <br/>
| style="width: 54px" | <br/>
| style="width: 192px" |
| style="width: 259px" | <br/>
| style="width: 115px" |
|}
== Analog IO ==
=== <u>RoboRIO Analog Inputs</u> ===
{| style="width: 1030px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| 12
| ID
|  
| style="text-align: center" | Subsystem
|  
| style="width: 70px" | <p style="text-align: center">Component</p><p style="text-align: center">Type</p>
|  
| style="width: 54px;  text-align: center" | Model #
| style="width: 227px;  text-align: center" | Description<br/>(brief)
| style="width: 262px;  text-align: center" | Operation<br/>
| style="width: 132px;  text-align: center" |
Voltage
 
Range
 
| style="width: 91px;  text-align: center" | Notes
|-
|-
| 13
| 0
|  
| drivetrain
|  
| style="width: 70px" | gyro
|  
| style="width: 54px" | ADW22307
| style="width: 227px" | drivetrain gyro rot feedback
| style="width: 262px" |  
X & Y orientation used in Autonomous.
 
(no temp correction needed within our bounds)
 
| style="width: 132px" | 2.5 V center (σ, 0.007 V/deg/sec (0.0069 to 0.0074 within ± 1σ)
| style="width: 91px" | [http://www.analog.com/static/imported-files/data_sheets/ADXRS652.pdf New Part Number: Datasheet]
|-
|-
| 14
| 1
|  
| <br/>
|  
| style="width: 70px" | <br/>
|  
| style="width: 54px" | <br/>
| style="width: 227px" | <br/>
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |  
|-
|-
| 15
| 2
|
|
|  
|  
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|-
|-
| 16
| 3
|
|
|  
|  
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|}
|}


=== <u>Rev Robotics More Board Analog IO</u> ===
{| style="width: 1030px" border="1" cellpadding="2" cellspacing="1"
|-
| '''ID'''
| style="text-align: center" | '''Subsystem'''
| style="width: 70px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 54px;  text-align: center" | '''Model #'''
| style="width: 227px;  text-align: center" | '''Description<br/>(brief)'''
| style="width: 262px;  text-align: center" | '''Operation'''<br/>
| style="width: 132px;  text-align: center" |
'''Voltage'''


'''Range'''


<span id="pwm"></span>
| style="width: 91px;  text-align: center" | '''Notes'''
|-
| AIN0
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | &nbsp;
| style="width: 227px" | <br/>
| style="width: 262px" | <br/>
| style="width: 132px" | &nbsp;
| style="width: 91px" |
|-
| AIN1
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|-
| AIN2
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|-
| AIN3
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" | <br/>
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" | <br/>
|-
| AOUT0
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" | <br/>
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" | <br/>
|-
| AOUT1
| <br/>
| style="width: 70px" | <br/>
| style="width: 54px" | <br/>
| style="width: 227px" |
| style="width: 262px" | <br/>
| style="width: 132px" | <br/>
| style="width: 91px" |
|}


= PWM Outputs =
== Digital IO (GPIO) ==


NOTE: each of these should also have a line in the Robot Map [[2015:Robot Sensors/Motors/Lights/Controls Map#servors|Servors/Actuators table]] (the "Robot Map Updated?" column in the following table indicates if this was done)
=== <u>RoboRio IO</u> ===


{| border="1" cellpadding="2" cellspacing="1"
{| style="width: 998px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| '''Subsystem'''
| '''Direction'''<br/>(IN/OUT)
| '''Description'''<br/>(brief)
| style="text-align: center;  width: 69px" | '''Subsystem'''
| '''Robot Map<br/>Updated?'''
| style="width: 73px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 52px;  text-align: center" | '''Model #'''
| style="width: 194px;  text-align: center" | '''Description<br/>(brief)'''
| style="width: 253px;  text-align: center" | '''Operation'''<br/>
| style="width: 118px;  text-align: center" | '''Notes'''
|-
| 0
| IN
| style="width: 69px" | drivetrain
| style="width: 73px" | Encoder
| style="width: 52px" | &nbsp;63R256
| style="width: 194px" | Left Encoder, Phase A
| style="width: 253px" | Drivetrain rotation - calculate Position measurement
| style="width: 118px" | <br/>
|-
|-
| 1
| 1
|  
| <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
|  
| style="width: 69px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">-</span><br/>
| <
| style="width: 73px" | -
| style="width: 52px" | -
| style="width: 194px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Left Encoder, Phase B</span><br/>
| style="width: 253px" | B-channel
| style="width: 118px" | May not be present
|-
|-
| 2
| 2
|  
| IN
|  
| style="width: 69px" | drivetrain
|  
| style="width: 73px" | Encoder
| style="width: 52px" | &nbsp;<span style="line-height: 20.7999992370605px">63R256</span>
| style="width: 194px" | Right Encoder, Phase A
| style="width: 253px" | <span style="line-height: 20.7999992370605px">Drivetrain rotation - calculate Position measurement</span><br/>
| style="width: 118px" |  
|-
|-
| 3
| 3
|  
| IN
|  
| style="width: 69px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">-</span><br/>
|  
| style="width: 73px" | -
| style="width: 52px" | &nbsp;-
| style="width: 194px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Right Encoder, Phase B</span><br/>
| style="width: 253px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">B-channel</span><br/>
| style="width: 118px" |
<span style="line-height: 20.7999992370605px">May not be present</span>
 
|-
|-
| 4
| 4
|  
| IN
|  
| style="width: 69px" | lifter
|  
| style="width: 73px" | Encoder
| style="width: 52px" | &nbsp;63R256
| style="width: 194px" | Lifter Encoder, Phase A
| style="width: 253px" | Lifter drive rotation - &nbsp;calculate Height Zeroed with Lifter Flag Sensor. Channel A
| style="width: 118px" |  
|-
|-
| 5
| 5
|  
| <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
|  
| style="width: 69px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">-</span><br/>
|  
| style="width: 73px" | -
| style="width: 52px" | -
| style="width: 194px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Lifter Encoder, Phase B</span><br/>
| style="width: 253px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">B-channel</span><br/>
| style="width: 118px" | <br/>
|-
|-
| 6
| 6
|  
| IN
|  
| style="width: 69px" | lifter
|  
| style="width: 73px" | Flag Sensor
| style="width: 52px" | &nbsp;OPB815
| style="width: 194px" | Home Position At Bottom
| style="width: 253px" | Lower position
| style="width: 118px" |  
|-
|-
| 7<br/>
| 7
| <br/>
| IN
| <br/>
| style="width: 69px" | gripper
| <br/>
| style="width: 73px" | Encoder
| style="width: 52px" | &nbsp;63R256
| style="width: 194px" | Gripper Encoder, Phase A
| style="width: 253px" | Gripper drive rotation - calculate Position
| style="width: 118px" |
|-
|-
| 8<br/>
| 8
| <br/>
| IN
| <br/>
| style="width: 69px" | -
| <br/>
| style="width: 73px" | -
| style="width: 52px" | -
| style="width: 194px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Gripper&nbsp;</span>Encoder, Phase B
| style="width: 253px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">B-channel</span>
| style="width: 118px" |
|-
|-
| 9<br/>
| 9
|  
| IN
|  
| style="width: 69px" | gripper
|  
| style="width: 73px" | Flag Sensor
|-
| style="width: 52px" | &nbsp;OPB815
| 10<br/>
| style="width: 194px" | Home Gripper Position A
|  
| style="width: 253px" | Inner position home flag (Primary)
|  
| style="width: 118px" | <br/>
|  
|}
|}


=== <u>Rev Robotics More Board IO</u> ===


{| style="width: 1022px" border="1" cellpadding="1" cellspacing="1"
|-
| style="width: 16px;  text-align: center" | '''ID'''
| style="width: 56px;  text-align: center" | '''Direction (IN/OUT)'''
| style="width: 74px;  text-align: center" | '''Subsystem'''
| style="width: 74px;  text-align: center" | '''Component Type'''
| style="width: 56px;  text-align: center" | '''Model #'''
| style="width: 197px;  text-align: center" | '''Description (brief)'''
| style="width: 254px;  text-align: center" | '''Operation'''<br/>
| style="width: 141px;  text-align: center" | '''Notes'''
|-
| style="width: 16px" | 0
| style="width: 56px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">gripper</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Banner</span><br/>
| style="width: 56px" | Q10AN6R
| style="width: 197px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Gripper Tote Detection</span><br/>
| style="width: 254px" | <span style="font-size: 13.3333339691162px;  line-height: 20.7999992370605px">Beam break sensor to check for tote presence</span><br/>
| style="width: 141px" | sensor open collector output. &nbsp;pullup in roborio
|-
| style="width: 16px" | 1
| style="width: 56px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">lifter</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Flag</span><br/>
| style="width: 56px" | OPB815
| style="width: 197px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Lift encoder high flag</span><br/>
| style="width: 254px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Lifter upper flag, for safety and to help calibration</span><br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 2
| style="width: 56px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">IN</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">gripper</span><br/>
| style="width: 74px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Flag Sensor</span><br/>
| style="width: 56px" | OPB815
| style="width: 197px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Home Gripper Position B</span><br/>
| style="width: 254px" | <span style="font-size: 13.3333339691162px;  line-height: 23.1111106872559px">Inner position Backup</span><br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 3
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 4
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 5
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 6
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 7
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 8
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 9
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 10
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 11
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 12
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 13
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 14
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|-
| style="width: 16px" | 15
| style="width: 56px" | <br/>
| style="width: 74px" | <br/>
| style="width: 74px" | <br/>
| style="width: 56px" | <br/>
| style="width: 197px" | <br/>
| style="width: 254px" | <br/>
| style="width: 141px" | <br/>
|}


<span id="relay"></span>
== I2C Registers ==


= Relay Outputs =
{| style="width: 1007px" border="1" cellpadding="2" cellspacing="1"
 
|-
NOTE: each of these should also have a line in the Robot Map [[2014:Robot Sensors/Motors/Lights/Controls Map#servors|Servors/Actuators table]] or the [[2015:Robot Sensors/Motors/Lights/Controls Map#lights|Lights table]] (the "Robot Map Updated?" column in the following table indicates if this was done)
| style="text-align: center" | '''Address'''<br/>(e.g. 0100111X)
 
| style="width: 37px;  text-align: center" | '''Pin'''<br/>(e.g. GP0)
{| border="1" cellpadding="2" cellspacing="1"
| style="width: 76px;  text-align: center" | '''Subsystem'''
| style="width: 75px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| style="width: 53px;  text-align: center" | '''Model #'''
| style="width: 205px;  text-align: center" | '''Description<br/>(brief)'''
| style="width: 241px;  text-align: center" | '''Operation'''<br/>
| style="width: 112px;  text-align: center" | '''Notes'''
|-
|-
| '''ID'''
| 0
| '''Subsystem'''
| style="width: 37px" |
| '''Description'''<br/>(brief)
| style="width: 76px" |
| '''Robot Map<br/>Updated?'''
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |
|-
|-
| 1
| 1
|  
| style="width: 37px" |
|  
| style="width: 76px" |
|  
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |  
|-
|-
| 2
| 2
|  
| style="width: 37px" |
|  
| style="width: 76px" |
|  
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |  
|-
|-
| 3
| 3
|  
| style="width: 37px" |
|  
| style="width: 76px" |
|  
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |  
|-
|-
| 4
| 4
|  
| style="width: 37px" |  
|  
| style="width: 76px" |  
|
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |
|-
| 5
| style="width: 37px" |
| style="width: 76px" |
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |
|-
| 6
| style="width: 37px" |
| style="width: 76px" |
| style="width: 75px" | <br/>
| style="width: 53px" | <br/>
| style="width: 205px" |
| style="width: 241px" | <br/>
| style="width: 112px" |  
|}
|}


== SPI Devices ==


{| style="width: 1007px" border="1" cellpadding="2" cellspacing="1"
|-
| style="text-align: center" | '''#'''<br/>
| style="width: 76px;  text-align: center" | '''Subsystem'''
| style="width: 75px" | <p style="text-align: center">'''Component&nbsp;Type'''</p>
| style="width: 53px;  text-align: center" | '''Model #'''
| style="width: 205px;  text-align: center" | '''Description&nbsp;(brief)'''
| style="width: 241px;  text-align: center" | '''Operation'''<br/>
| style="width: 112px;  text-align: center" | '''Notes'''<br/>
|-
| kOnBoardCS0
| style="width: 76px" | drivetrain
| style="width: 75px" | accelerometer
| style="width: 53px" | <span style="font-size:small"><span style="color: rgb(0, 0, 0);  font-family: sans-serif;  line-height: 28.4444px">ADXL345</span></span><br/>
| style="width: 205px" | <span style="font-size:small"><span style="color: rgb(0, 0, 0);  font-family: sans-serif;  line-height: 28.4444px">accelerometer, right by the gyro</span></span><br/>
| style="width: 241px" | to improve autonomous drive code<br/>
| style="width: 112px" | <br/>
|-
| <br/>
| style="width: 76px" | <br/>
| style="width: 75px" | <br/>
| style="width: 53px" | &nbsp;
| style="width: 205px" | <br/>
| style="width: 241px" | <br/>
|}


<span id="analog"></span>
== USB Host Ports ==


= Analog Inputs =
{| style="width: 1007px" border="1" cellpadding="2" cellspacing="1"
|-
| style="text-align: center" | '''Address'''<br/>
| style="width: 76px;  text-align: center" | '''Subsystem'''
| style="width: 75px" | <p style="text-align: center">'''Component&nbsp;Type'''</p>
| style="width: 53px;  text-align: center" | '''Model #'''
| style="width: 205px;  text-align: center" | '''Description&nbsp;(brief)'''
| style="width: 241px;  text-align: center" | '''Operation'''<br/>
| style="width: 112px;  text-align: center" | '''Notes'''
|-
| 0
| style="width: 76px" | Camera
| style="width: 75px" | Camera
| style="width: 53px" | HD-3000
| style="width: 205px" | USB camera
| style="width: 241px" | Facing down from top of lifter.&nbsp;Helps with tote + alignment in auto, driver, maybe for semiauto
| style="width: 112px" |
|-
| 1
| style="width: 76px" | Logging
| style="width: 75px" | USB Stick
| style="width: 53px" | &nbsp;?
| style="width: 205px" | USB Stick to log info
| style="width: 241px" | record match and state information at high rate, for postmortem match analysis
| style="width: 112px" |
|}


NOTE: each of these should also have a line in the Robot Map [[2014:Robot Sensors/Motors/Lights/Controls Map#sensors|Sensors table]] (the "Robot Map Updated?" column in the following table indicates if this was done)
== Pneumatics Control Module ==


{| border="1" cellpadding="2" cellspacing="1"
{| style="width: 931px" border="1" cellpadding="2" cellspacing="1"
|-
|-
| '''ID'''
| '''ID'''
| '''Subsystem'''
| style="text-align: center" | '''Subsystem'''
| '''Description'''<br/>(brief)
| style="width: 75px" | <p style="text-align: center">'''Component'''</p><p style="text-align: center">'''Type'''</p>
| '''Robot Map<br/>Updated?'''
| style="width: 51px" | <p style="text-align: center">'''Model #'''</p>
| style="width: 211px" | <p style="text-align: center">'''Description'''</p><p style="text-align: center">'''(brief)'''</p>
| style="width: 290px;  text-align: center" | '''Operation'''<br/>
| style="width: 118px;  text-align: center" | '''Notes'''
| style="width: 118px;  text-align: center" | '''Pressure Circuit'''
|-
| 0
| Drivetrain
| style="width: 75px" | Single Solenoid
| style="width: 51px" | SY3140-6LZ
| style="width: 211px" | shifter LOW (default high)
| style="width: 290px" | shifts down
| style="width: 118px" | double action cylinder (vented no action)
| style="width: 118px" | A (4 total, 40-60 psi tbd)
|-
|-
| 1
| 1
|  
| Drivetrain<br/>
|  
| style="width: 75px" | Single Solenoid<br/>
|  
| style="width: 51px" | SY3140-6LZ<br/>
| style="width: 211px" | strafing wheel DOWN (default up)<br/>
| style="width: 290px" | lowers strafing wheel<br/>
| style="width: 118px" | single action, spring retract cylinder (vented up)
| style="width: 118px" | B (3 total, 20-60 psi tbd)
|-
|-
| 2
| 2
|  
| Stabilizer<br/>
|  
| style="width: 75px" | Single Solenoid<br/>
|  
| style="width: 51px" | &nbsp;SY3140-6LZ
| style="width: 211px" | Stabilizer Gripper IN (default out)<br/>
| style="width: 290px" | closes stabilizer<br/>
| style="width: 118px" | double action cylinder&nbsp;(vented no action)<br/>
| style="width: 118px" | A
|-
|-
| 3
| 3
|  
| Lifter<br/>
|  
| style="width: 75px" | Single Solenoid<br/>
|  
| style="width: 51px" | SY3140-6LZ<br/>
| style="width: 211px" | Lifter brake OPEN (default locked)<br/>
| style="width: 290px" | pnuematic cylinder engages bicycle brake to lock lift elevator<br/>
| style="width: 118px" | double action cylinder&nbsp;(vented open, spring on brake)<br/>
| style="width: 118px" | A
|-
|-
| 4
| 4
| <br/>
| style="width: 75px" | <br/>
| style="width: 51px" | &nbsp;
| style="width: 211px" | <br/>
| style="width: 290px" | <br/>
| style="width: 118px" | <br/>
| style="width: 118px" | <br/>
|-
| 5
| <br/>
| style="width: 75px" | <br/>
| style="width: 51px" | <br/>
| style="width: 211px" | <br/>
| style="width: 290px" | <br/>
| style="width: 118px" | <br/>
| style="width: 118px" | <br/>
|-
| 6
| <br/>
| style="width: 75px" | <br/>
| style="width: 51px" | &nbsp;
| style="width: 211px" | <br/>
| style="width: 290px" | <br/>
| style="width: 118px" | <br/>
| style="width: 118px" | <br/>
|-
| 7
|  
|  
|  
| style="width: 75px" |
|  
| style="width: 51px" | <br/>
| style="width: 211px" | <br/>
| style="width: 290px" | <br/>
| style="width: 118px" |
| style="width: 118px" | <br/>
|}
|}


= Operator Controls =


There are two drive modes:


<span id="gpio"></span>
*'''Porcupine'''
*'''Arcade'''


= Digital IO (GPIO) =
== Joystick 1/Left ==


NOTE: each of these should also have a line in the Robot Map or the (the "Robot Map Updated?" column in the following table indicates if this was done)
{| style="width: 661px" border="1" cellpadding="2" cellspacing="1"
|-
| '''Button/Axis'''
| style="width: 158px;  text-align: center" | '''Description'''<br/>(brief)
| style="width: 281px;  text-align: center" | '''Operation '''(Porcupine)<br/>
| style="width: 281px;  text-align: center" | '''Operation''' (Arcade)<br/>
| style="width: 119px;  text-align: center" | '''Notes'''
|-
| Y-Axis
| style="width: 158px" | 6Move Forward/Backward
| style="width: 281px" |
<span style="line-height: 20.79px">Corresponds to forward motion of left side</span> (unless #3 is pressed)


{| border="1" cellpadding="2" cellspacing="1"
| style="width: 281px" | Moves whole robot forward<br/>
| style="width: 119px" |
|-
|-
| '''ID'''
| X-Axis&nbsp;
| '''Direction'''<br/>(IN/OUT)
| style="width: 158px" |
| '''Subsystem'''
| style="width: 281px" | Corresponds to 1/2 of lateral robot motion<br/>
| '''Description'''<br/>(brief)
| style="width: 281px" | Moves whole robot sideways (right is right)<br/>
| '''Robot Map<br/>Updated?'''<br/>
| style="width: 119px" |
|-
|-
| 1
| 1/trigger
| IN
| style="width: 158px" | Shift
|  
| colspan="2" rowspan="1" style="width: 281px" | On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed.&nbsp;<br/>
|  
| style="width: 119px" |  
|
|-
|-
| 2
| 2
|  
| style="width: 158px" | Raise center wheel<br/>
|  
| colspan="2" rowspan="1" style="width: 281px" |  
|  
On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.
|  
 
| style="width: 119px" |  
|-
|-
| 3
| 3
|  
| style="width: 158px" | Straight<br/>
|  
| style="width: 281px" | Drive straight forward and back with ''only Y axis of left joystick''<br/>
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 4
| 4
|  
| style="width: 158px" |  
|  
| style="width: 281px" |  
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 5
| 5
|  
| style="width: 158px" |  
|  
| style="width: 281px" |  
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 6
| 6
|  
| style="width: 158px" |  
|  
| style="width: 281px" |  
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 7
| 7
|  
| style="width: 158px" |  
|
| style="width: 281px" | <br/>
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 8<br/>
| 8
|  
| style="width: 158px" |
|  
| style="width: 281px" | <br/>
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 9<br/>
| 9
|  
| style="width: 158px" |
|  
| style="width: 281px" | <br/>
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |  
|-
|-
| 10
| 10
|  
| style="width: 158px" |
|  
| style="width: 281px" | <br/>
|  
| style="width: 281px" | <br/>
|  
| style="width: 119px" |
|-
| 11
| style="width: 158px" |
| style="width: 281px" |
| style="width: 281px" | <br/>
| style="width: 119px" |
|-
| 12
| style="width: 158px" |
| style="width: 281px" |
| style="width: 281px" | <br/>
| style="width: 119px" |  
|-
| Z-axis
| style="width: 158px" |
| style="width: 281px" |
| style="width: 281px" | <br/>
| style="width: 119px" |  
|}
|}


== Joystick 2/Right ==


{| style="width: 666px" border="1" cellpadding="2" cellspacing="1"
|-
| '''Button/Axis'''
| style="width: 141px;  text-align: center" | '''Description'''<br/>(brief)
| style="width: 280px;  text-align: center" | '''Operation''' (Porcupine)<br/>
| style="width: 280px;  text-align: center" | '''Operation''' (Arcade)<br/>
| style="width: 142px;  text-align: center" | '''Notes'''
|-
| Y-axis
| style="width: 141px" | Move Forward/Backward
| style="width: 280px" |
<span style="line-height: 20.79px">Corresponds to forward motion of right side</span> (unless #3 is on left Joystick is pressed)


<span id="i2c"></span>
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| X-axis
| style="width: 141px" | Move Left/Right
| style="width: 280px" | Corresponds to 1/2 of lateral robot motion<br/>
| style="width: 280px" | X axis determines rotation (around robot center, unless #4,#5 are pressed)<br/>
| style="width: 142px" |
|-
| 1
| style="width: 141px" | Shift
| colspan="2" rowspan="1" style="width: 280px" | <span style="line-height: 20.7999992370605px">On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed.</span><br/>
| style="width: 142px" |
|-
| 2
| style="width: 141px" | &nbsp;Raise center wheel
| colspan="2" rowspan="1" style="width: 280px" | On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.<br/>
| style="width: 142px" |
|-
| 3
| style="width: 141px" | Signal<br/>
| style="width: 280px" | <br/>When pressed, make the lights blink to signal to the human player<br/>
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 4
| style="width: 141px" | Pivot over left<br/>
| style="width: 280px" |
| style="width: 280px" | While pressed, center of rotation is halfway on left side<br/>
| style="width: 142px" | <br/>
|-
| 5
| style="width: 141px" | Pivot over right<br/>
| style="width: 280px" | <br/>
| style="width: 280px" | While pressed, center of rotation is halfway on right side<br/>
| style="width: 142px" |
|-
| 6
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 7
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 8
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 9
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 10
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 11
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| 12
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|-
| Z-axis
| style="width: 141px" |
| style="width: 280px" |
| style="width: 280px" | <br/>
| style="width: 142px" |
|}


= I2C Registers =
== Joystick 3 ==


NOTE: each of these should also have a line in the Robot Map [[2014:Robot Sensors/Motors/Lights/Controls Map#lights|Lights table]] (the "Robot Map Updated?" column in the following table indicates if this was done)
{| style="width: 666px" border="1" cellpadding="2" cellspacing="1"
|-
| '''Button/Axis'''
| style="width: 140px;  text-align: center" | '''Description'''<br/>(brief)
| style="width: 292px;  text-align: center" | '''Operation'''<br/>
| style="width: 131px;  text-align: center" | '''Notes'''<br/>
|-
| X-axis
| style="width: 140px" |
| style="width: 292px" | <br/>
| style="width: 131px" |
|-
| Y-axis
| style="width: 140px" | Move up/down
| style="width: 292px" | Raise/lower grips, if '''Level 3 Preset''' not being pressed. This controls speed of movement.<br/>
| style="width: 131px" | Forward is down, back pulls up
|-
| 1/trigger
| style="width: 140px" | Close lower grips
| style="width: 292px" |
Closes the grips while this button is being pressed. Grips stop moving when this button and button #2 are both released.


{| border="1" cellpadding="2" cellspacing="1"
| style="width: 131px" | <br/>
|-
| 2
| style="width: 140px" | Open lower grips
| style="width: 292px" | Opens the grips while this button is being pressed (and button #1 is released). Grips stop moving when this button and button #1 are both released.
| style="width: 131px" |
|-
|-
| '''Address'''<br/>(e.g. 0100111X)
| 3
| '''Pin'''<br/>(e.g. GP0)
| style="width: 140px" | Level 3 Preset
| '''Subsystem'''
| style="width: 292px" | Raise grips high enough to be above 2 totes (i.e. 2 tote stack created by human player at human player station). Grips raise and stay raised while the button is being pressed. While being pressed, the Y-axis is ignored. When button is released, Y-axis controls grip height.
| '''Description'''<br/>(brief)
| style="width: 131px" | <br/>
| '''Robot Map<br/>Updated?'''
|-
|-
|  
| 4
|  
| style="width: 140px" | <br/>TBD - RC gripper<br/>
|  
| style="width: 292px" |
|  
| style="width: 131px" |
|  
|-
| 5
| style="width: 140px" | TBD - RC gripper
| style="width: 292px" |
| style="width: 131px" |
|-
| 6
| style="width: 140px" | Opens Stabilizer Arms
| style="width: 292px" | compress pistons to open arms when pressed
| style="width: 131px" |
 
 
|-
| 7
| style="width: 140px" | Closes Stabilizer Arms
| style="width: 292px" | extend pistons to close arms when pressed
| style="width: 131px" |  
|-
|-
|  
| 8
|  
| style="width: 140px" |  
|  
| style="width: 292px" |  
|  
| style="width: 131px" |  
|  
|-
|-
|  
| 9
|  
| style="width: 140px" |  
|  
| style="width: 292px" |  
|  
| style="width: 131px" |  
|  
|-
|-
|  
| 10
|  
| style="width: 140px" |  
|  
| style="width: 292px" |  
|  
| style="width: 131px" |  
|  
|-
|-
|  
| 11
|  
| style="width: 140px" |  
|  
| style="width: 292px" |  
|  
| style="width: 131px" |  
|  
|-
|-
|  
| 12
|  
| style="width: 140px" |  
|  
| style="width: 292px" |  
|  
| style="width: 131px" | <br/>
|  
|-
|-
|  
| Z-axis
|  
| style="width: 140px" |  
|  
| style="width: 292px" |  
|  
| style="width: 131px" |  
|  
|}
|}


== Joystick 4/LaunchPad ==


{| style="width: 671px" border="1" cellpadding="2" cellspacing="1"
|-
| '''Button/Axis'''<br/>
| style="width: 172px;  text-align: center" | '''Description'''<br/>(brief)
| style="width: 277px;  text-align: center" | '''Operation'''
| style="width: 119px;  text-align: center" | '''Notes'''
|-
| 1
| style="width: 172px" | Auto 'main'<br/>
| style="width: 277px" | Active when 3-way Auto switch is 'up'. This will pick the hard coded/defined auto mode.
| style="width: 119px" |
|-
| 2
| style="width: 172px" | Auto 'dashboard'
| style="width: 277px" | Active when 3-way Auto switch is 'down'. This will indicate that the auto mode selected in the Dashboard is to be used.
| style="width: 119px" |
|-
| 3
| style="width: 172px" | Broken #1
| style="width: 277px" |
Lift position sensors broken
| style="width: 119px" | left-most switch on top row
|-
| 4
| style="width: 172px" | Broken #2
| style="width: 277px" | Gripper position sensors broken<br/>
| style="width: 119px" | located to the right of Broken #1
|-
| 5
| style="width: 172px" | Broken #3
| style="width: 277px" | enable arcade drive (has priority over #4)<br/>
| style="width: 119px" | located to the left of Broken #4
|-
| 6
| style="width: 172px" | Broken #4
| style="width: 277px" | future<br/>
| style="width: 119px" | right-most switch on top row<br/>
|-
| 7
| style="width: 172px" | Broken #5
| style="width: 277px" | future<br/>
| style="width: 119px" | left-most switch on bottom row
|-
| 8
| style="width: 172px" | Broken #6
| style="width: 277px" | set alternate camera<br/>
| style="width: 119px" | located to the right of Broken #5<br/>
|-
| 9
| style="width: 172px" | Broken #7
| style="width: 277px" | future
| style="width: 119px" | located to the left of Broken #8
|-
| 10
| style="width: 172px" | Broken #8
| style="width: 277px" | future<br/>
| style="width: 119px" | Right-most switch on bottom row<br/>
|}


<span id="pneumatics"></span>


= Pneumatics Control Module=


{| border="1" cellpadding="2" cellspacing="1"
{| style="width: 500px" border="1" cellpadding="1" cellspacing="1"
|-
|-
| '''ID'''
| Output Byte
| '''Subsystem'''
| Is 1 If and Only If...
| '''Description'''<br/>(brief)
| Notes
| '''Robot Map<br/>Updated?'''
|-
|-
| 1
| 1
|  
| Autonomous Mode is active (either disabled or running)
|  
| <br/>
|
|-
|-
| 2
| 2
|  
| TeleOperated Mode is active (either disabled or running)
|  
| <br/>
|
|-
|-
| 3
| 3
|  
| The alliance color is Red
|  
| <br/>
|
|-
|-
| 4
| 4
|  
| The drive is in pure tank/pure strafe mode
|  
| <br/>
|
|-
|-
| 5
| 5
|  
| The drive is in arcade mode
|  
| <br/>
|
|-
|-
| 6
| 6
|  
| The drive is in porcupine mode
|  
| <br/>
|
|-
|-
| 7
| 7
|  
| The FMS is attached
|  
| <br/>
|
|-
|-
| 8
| 8
|  
| The Roborio has declared brownout
|  
| <br/>
|  
|-
| 9
| The alliance color is in an indeterminate state
| <br/>
|-
| 10
| The Driver Station is Enabled (Either Auto, Tele, Test is running)
| <br/>
|-
| 11
| We are in station 1 or 3 (false=station 2 or invalid)
| <br/>
|-
| 12
| We are in station 2 or 3 (false=station 1 or invalid)
| <br/>
|-
| 13
| <br/>
| <br/>
|-
| 14
| <br/>
| <br/>
|-
| 15
| <br/>
| <br/>
|-
| 16
| <br/>
| <br/>
|-
| 17
| <br/>
| <br/>
|-
| 18
| <br/>
| <br/>
|-
| 19
| <br/>
| <br/>
|-
| 20
| <br/>
| <br/>
|-
| 21
| <br/>
| <br/>
|-
| 22
| <br/>
| <br/>
|-
| 23
| <br/>
| <br/>
|-
| 24
| <br/>
| <br/>
|-
| 25
| <br/>
| <br/>
|-
| 26
| <br/>
| <br/>
|-
| 27
| <br/>
| <br/>
|-
| 28
| <br/>
| <br/>
|-
| 29
| <br/>
| <br/>
|-
| 30
| <br/>
| <br/>
|-
| 31
| <br/>
| <br/>
|-
| 32
| <br/>
| <br/>
|}
 
== SmartDashboard ==
 
{| style="width: 1014px" border="1" cellpadding="1" cellspacing="1"
|-
| '''Screen'''<br/>
| Description (brief)
| style="width: 174px" | Operation
| style="width: 458px" | Notes
| style="width: 150px" | Variable Name
| style="width: 91px" | Data Type
|-
| Main
| Camera Feed
| style="width: 174px" | Direct feed from the camera
| style="width: 458px" | --
| style="width: 150px" | --
| style="width: 91px" | --
|-
| Main
| Auto Choice
| style="width: 174px" | Will be used to control which autononomous mode is used.
| style="width: 458px" | The auto mode should only be able to be changed if the three way switch is in the down position.
| style="width: 150px" | auto_choice
| style="width: 91px" | double
|-
| Main
| Auto Switch Position
| style="width: 174px" | Will be used to determine if autononomous mode from dashboard is used.
| style="width: 458px" | The auto mode should only be able to be changed in the dashboard if the three way switch is in the down position.
| style="width: 150px" | auto_switch
| style="width: 91px" | double
|-
| Main
| Gripper Position
| style="width: 174px" | A meter used to show the position of the grippers.
| style="width: 458px" | Will show a percent as a label, 0% means closed and 100% means fully opened.
| style="width: 150px" | gripper_position
| style="width: 91px" |
double
 
|-
| Main&nbsp;
| Lifter Position
| style="width: 174px" | A meter used to show the position of the lifter.
| style="width: 458px" | <span style="line-height: 20.7999992370605px">Will show a percent as a label, 0% means home position and 100% means the lifter is at full height.</span><br/>
| style="width: 150px" | lifter_position
| style="width: 91px" |
double
 
|-
| Main
| Auto Mode Description
| style="width: 174px" | Describes the currently selected auto mode.
| style="width: 458px" | --
| style="width: 150px" | auto_description
| style="width: 91px" | string
|}
|}
= IO Maps for Old Robots =
*[[2014:Robot IO Map|2014 IO Map]]
*[[2013:Robot IO Map|2013 IO Map]]
*[[2012:Robot IO Map|2012 IO Map]]
*[[2011:Robot IO Map|2011 Thunderous Prime IO Map]]
*[[2010:Electrical Main#IO Map 2010 Thunderfoot|2010 Thunderfoot IO Map]]
*[[2009:IO Map|2009 Thunderplucker]]
*[[IO Pin Maps for Pre-2009 Robots]]

Latest revision as of 15:53, 7 March 2015

Robot I/O

CAN ID Assignments

ID Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0 RESERVED

n/a


Factory-default
allows for adding CTRE devices quickly and re-assign its ID

don't use

1 RESERVED n/a
Factory-default
allows for adding Jaguar quickly and re-assign its ID

don't use
2 drivetrain motor CIM Left Front Drive
3 drivetrain motor CIM Left Rear Drive
4 drivetrain motor CIM Right Front Drive
5 drivetrain motor CIM Right Rear Drive
6 drivetrain motor CIM Strafe
unclear on how to activate this motor
7 lifter motor RS775 Left lifter
8 lifter motor RS775 Right lifter
9 gripper motor RS550 Gripper/Motor

10




11




12


13


14


15 pnuematics PCM module
N/A
Stabilizer, Shifter, Strafing
address spaces for Jaguars, SRXs, PCM, and PDP are all separate. We are limited to one PDP, and will need only one PCM
0 power dist. PD module
N/A
Power Distribution Readback
Must be 0 (WPILib has no easy way to use another ID). We'll only ever have one

PWM Outputs

ID Subsystem

Component

Type

Model # Description
(brief)

Operation


Notes
0



1


2


3


4


5


6





7





8


9



Relay Outputs

ID Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0


1


2


3


Analog IO

RoboRIO Analog Inputs

ID Subsystem

Component

Type

Model # Description
(brief)
Operation

Voltage

Range

Notes
0 drivetrain gyro ADW22307 drivetrain gyro rot feedback

X & Y orientation used in Autonomous.

(no temp correction needed within our bounds)

2.5 V center (σ, 0.007 V/deg/sec (0.0069 to 0.0074 within ± 1σ) New Part Number: Datasheet
1





2



3



Rev Robotics More Board Analog IO

ID Subsystem

Component

Type

Model # Description
(brief)
Operation

Voltage

Range

Notes
AIN0

 

 
AIN1




AIN2




AIN3






AOUT0






AOUT1




Digital IO (GPIO)

RoboRio IO

ID Direction
(IN/OUT)
Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0 IN drivetrain Encoder  63R256 Left Encoder, Phase A Drivetrain rotation - calculate Position measurement
1 IN
-
- - Left Encoder, Phase B
B-channel May not be present
2 IN drivetrain Encoder  63R256 Right Encoder, Phase A Drivetrain rotation - calculate Position measurement
3 IN -
-  - Right Encoder, Phase B
B-channel

May not be present

4 IN lifter Encoder  63R256 Lifter Encoder, Phase A Lifter drive rotation -  calculate Height Zeroed with Lifter Flag Sensor. Channel A
5 IN
-
- - Lifter Encoder, Phase B
B-channel

6 IN lifter Flag Sensor  OPB815 Home Position At Bottom Lower position
7 IN gripper Encoder  63R256 Gripper Encoder, Phase A Gripper drive rotation - calculate Position
8 IN - - - Gripper Encoder, Phase B B-channel
9 IN gripper Flag Sensor  OPB815 Home Gripper Position A Inner position home flag (Primary)

Rev Robotics More Board IO

ID Direction (IN/OUT) Subsystem Component Type Model # Description (brief) Operation
Notes
0 IN
gripper
Banner
Q10AN6R Gripper Tote Detection
Beam break sensor to check for tote presence
sensor open collector output.  pullup in roborio
1 IN
lifter
Flag
OPB815 Lift encoder high flag
Lifter upper flag, for safety and to help calibration

2 IN
gripper
Flag Sensor
OPB815 Home Gripper Position B
Inner position Backup

3






4






5






6






7






8






9






10






11






12






13






14






15






I2C Registers

Address
(e.g. 0100111X)
Pin
(e.g. GP0)
Subsystem

Component

Type

Model # Description
(brief)
Operation
Notes
0


1


2


3


4


5


6


SPI Devices

#
Subsystem

Component Type

Model # Description (brief) Operation
Notes
kOnBoardCS0 drivetrain accelerometer ADXL345
accelerometer, right by the gyro
to improve autonomous drive code




 

USB Host Ports

Address
Subsystem

Component Type

Model # Description (brief) Operation
Notes
0 Camera Camera HD-3000 USB camera Facing down from top of lifter. Helps with tote + alignment in auto, driver, maybe for semiauto
1 Logging USB Stick  ? USB Stick to log info record match and state information at high rate, for postmortem match analysis

Pneumatics Control Module

ID Subsystem

Component

Type

Model #

Description

(brief)

Operation
Notes Pressure Circuit
0 Drivetrain Single Solenoid SY3140-6LZ shifter LOW (default high) shifts down double action cylinder (vented no action) A (4 total, 40-60 psi tbd)
1 Drivetrain
Single Solenoid
SY3140-6LZ
strafing wheel DOWN (default up)
lowers strafing wheel
single action, spring retract cylinder (vented up) B (3 total, 20-60 psi tbd)
2 Stabilizer
Single Solenoid
 SY3140-6LZ Stabilizer Gripper IN (default out)
closes stabilizer
double action cylinder (vented no action)
A
3 Lifter
Single Solenoid
SY3140-6LZ
Lifter brake OPEN (default locked)
pnuematic cylinder engages bicycle brake to lock lift elevator
double action cylinder (vented open, spring on brake)
A
4

 



5






6

 



7



Operator Controls

There are two drive modes:

  • Porcupine
  • Arcade

Joystick 1/Left

Button/Axis Description
(brief)
Operation (Porcupine)
Operation (Arcade)
Notes
Y-Axis 6Move Forward/Backward

Corresponds to forward motion of left side (unless #3 is pressed)

Moves whole robot forward
X-Axis  Corresponds to 1/2 of lateral robot motion
Moves whole robot sideways (right is right)
1/trigger Shift On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed. 
2 Raise center wheel

On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.

3 Straight
Drive straight forward and back with only Y axis of left joystick

4
5
6
7

8

9

10

11
12
Z-axis

Joystick 2/Right

Button/Axis Description
(brief)
Operation (Porcupine)
Operation (Arcade)
Notes
Y-axis Move Forward/Backward

Corresponds to forward motion of right side (unless #3 is on left Joystick is pressed)


X-axis Move Left/Right Corresponds to 1/2 of lateral robot motion
X axis determines rotation (around robot center, unless #4,#5 are pressed)
1 Shift On button press shifts to high gear. On release, shifts to low gear. Only one trigger needs to be pressed.
2  Raise center wheel On state transitions from no #2 buttons pressed to one or more #2 buttons pressed, the center wheel toggles from up to down and vica versa.
3 Signal

When pressed, make the lights blink to signal to the human player

4 Pivot over left
While pressed, center of rotation is halfway on left side

5 Pivot over right

While pressed, center of rotation is halfway on right side
6
7
8
9
10
11
12
Z-axis

Joystick 3

Button/Axis Description
(brief)
Operation
Notes
X-axis
Y-axis Move up/down Raise/lower grips, if Level 3 Preset not being pressed. This controls speed of movement.
Forward is down, back pulls up
1/trigger Close lower grips

Closes the grips while this button is being pressed. Grips stop moving when this button and button #2 are both released.


2 Open lower grips Opens the grips while this button is being pressed (and button #1 is released). Grips stop moving when this button and button #1 are both released.
3 Level 3 Preset Raise grips high enough to be above 2 totes (i.e. 2 tote stack created by human player at human player station). Grips raise and stay raised while the button is being pressed. While being pressed, the Y-axis is ignored. When button is released, Y-axis controls grip height.
4
TBD - RC gripper
5 TBD - RC gripper
6 Opens Stabilizer Arms compress pistons to open arms when pressed


7 Closes Stabilizer Arms extend pistons to close arms when pressed
8
9
10
11
12
Z-axis

Joystick 4/LaunchPad

Button/Axis
Description
(brief)
Operation Notes
1 Auto 'main'
Active when 3-way Auto switch is 'up'. This will pick the hard coded/defined auto mode.
2 Auto 'dashboard' Active when 3-way Auto switch is 'down'. This will indicate that the auto mode selected in the Dashboard is to be used.
3 Broken #1

Lift position sensors broken

left-most switch on top row
4 Broken #2 Gripper position sensors broken
located to the right of Broken #1
5 Broken #3 enable arcade drive (has priority over #4)
located to the left of Broken #4
6 Broken #4 future
right-most switch on top row
7 Broken #5 future
left-most switch on bottom row
8 Broken #6 set alternate camera
located to the right of Broken #5
9 Broken #7 future located to the left of Broken #8
10 Broken #8 future
Right-most switch on bottom row


Output Byte Is 1 If and Only If... Notes
1 Autonomous Mode is active (either disabled or running)
2 TeleOperated Mode is active (either disabled or running)
3 The alliance color is Red
4 The drive is in pure tank/pure strafe mode
5 The drive is in arcade mode
6 The drive is in porcupine mode
7 The FMS is attached
8 The Roborio has declared brownout
9 The alliance color is in an indeterminate state
10 The Driver Station is Enabled (Either Auto, Tele, Test is running)
11 We are in station 1 or 3 (false=station 2 or invalid)
12 We are in station 2 or 3 (false=station 1 or invalid)
13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

SmartDashboard

Screen
Description (brief) Operation Notes Variable Name Data Type
Main Camera Feed Direct feed from the camera -- -- --
Main Auto Choice Will be used to control which autononomous mode is used. The auto mode should only be able to be changed if the three way switch is in the down position. auto_choice double
Main Auto Switch Position Will be used to determine if autononomous mode from dashboard is used. The auto mode should only be able to be changed in the dashboard if the three way switch is in the down position. auto_switch double
Main Gripper Position A meter used to show the position of the grippers. Will show a percent as a label, 0% means closed and 100% means fully opened. gripper_position

double

Main  Lifter Position A meter used to show the position of the lifter. Will show a percent as a label, 0% means home position and 100% means the lifter is at full height.
lifter_position

double

Main Auto Mode Description Describes the currently selected auto mode. -- auto_description string

IO Maps for Old Robots