ROBOTC for IFI

Download Report

Transcript ROBOTC for IFI

IR SENSORS AND ENCODERS.
LCDs
Timothy Friez
Class # 2
Outline for Tonight
• Variables overview
• IR Board
–
–
–
–
–
Purpose
Wiring
Programming
Testing
Using in an Autonomous Program (code sample)
• *10 minute break*
• Encoders
– Purpose
– How it works
– Testing and Developing a Program
• Questions
Why use variables?
• Variables help to simplify your code.
– You can use variables more than once
– When you change a variable once, it changes the
reference to that variable everywhere.
– Makes your code more “english” readable.
• Example:
motor[port1] = 100;
motor[port2] = 100;
Or, better…
int speed = 100;
motor[port1] = speed;
motor[port2] = speed;
Other Advantages of variables
• Any variable declared appears in the
“global variables”
– This screen will show the current value of all
variables.
• Variables can be modified in a program
– example:
• int motorspeed = 50;
• motorspeed = motorspeed * 2;
Ideas for using variables
• Setting global motor speeds
– int motorspeed = 100;
• Knowing the condition of your joysticks
– int joystick_x;
– joystick_x = frcRF[p1_y];
Fun with Variables
• Common types of variables:
– int = integer (whole numbers)
– float = floating point number (decimals)
– bool = boolean values (true or false)
• Valid uses:
– int motorspeed = 100;
– float pi = 3.14159;
– bool sensor_check = true;
Types of Operators (Boolean)
• 7 primary types of Boolean operators for
conditional statements
Values are Boolean,
< Less Than
arguments not
> Greater Than
necessarily.
<= Less Than or Equal To
>= Greater Than or Equal To
&& And (both conditions must be true)
||
Or (either condition can be true)
== Equal (one condition equals another condition)
!= Not Equal (one condition does not equal another)
IR Sensor Board
Called also the IR board =
Infrared sensors
• Used for “Hybrid” mode
• Allows the Human Player to send up to 4
signals (but not at the same time…)
IR Sensor Board
• Wiring the board
– 2 positive voltage wires (pin 1 and 2)
– 2 negative voltage wires (pin 3 and 4)
– 4 Signal wires (pins 5, 6, 7, 8)
• These wires go to the “Digital I/O” port on the FRC
Pin 5 – Output #3
Pins 9 and
10 are not
used.
Pin 6 – Output #2
Pin 7 – Output #1
Pin 3 and 4:
Pin 8 – Output #4
Voltage Ground
Pin 1 and 2:
Voltage Pos
But it’s not that easy…
• You have to hook the signal wires up to the
white wire of a 3-pin PWM Cable
– Pin 5, Pin 6, Pin 7, and Pin 8 are all signal wires
• You then have to hook the ground wire from the
IR board to the Black wire of the PWM cable to
complete the electrical circuit!
– Pin 3 and Pin 4 are ground
Wiring Diagram for IR Board, Robot
and 4 digital sensors
3
2
1
4
IR Board
Pin 4
Pin 8
Pin 1
Pin 7
Pin 2
Pin 6
Pin 5
Pin 3
Robot
Robot
Ground
Voltage +
So what’s that look like?
• A mess, kind of.
So how do we “program” it?
• First you have to “train” the receiver.
– Step 1: Turn power off
– Step 2: Hold button down on IR Board
– Step 3: When LED 1 turns on, press the first button.
• If the signal is good, the LED will go off, and then back on
again.
– Step 4: Press the first button again until LED 1 goes
off once more.
– Step 5: LED 2 will light up… repeat with buttons 2, 3
and 4.
• Once done, all LEDs will turn off, and the IR board is
programmed.
How do we ROBOTC program it?
• All 4 of these inputs are treated like
digital inputs
– Reminder: Digital inputs are like touch
sensors.
• Code: (assume we’ve put this on port 3)
– frcDigitalIODirection[pio3] = dirInput;
– Access with frcDigitalIOValue[pio3]
Encoders
• Know how many time your drive wheels
have gone around.
• Need an encoder on each drive motor
output.
Our Encoders? Gear Tooth!
• Each FIRST kit comes with 2 gear tooth
encoders.
How encoders work
• The gear tooth encoder works on a principal
called the “Hall Effect”
– Detects differences in magnetic fields and produces a
result.
• When the sensor reads a tip, it sends a high
digital value (a “1”)
• When the sensor reads a valley, it sends a low
digital value (a “0”)
How encoders work
Output:
1
Gear tooth
Sensor
Metal
Gear
How encoders work
Output:
0
G.T.
Sensor
Metal
Gear
Problems with encoders
• Extremely fragile (look at how tiny it is!)
• Requires 2 cables
– 12 volt power supply
– 5 volt digital signal cable (PWM)
• Must be mounted no further than 2mm
away from top of gear tooth.
• Not a problem?:
– able to be mounted in the 2008 gearboxes
directly
Recommendations for use
• Larger, more robust gear tooth sensor!
• Honeywell 1GT101DC - Hall Effect Gear
Tooth Sensor
• Digikey.com - $22.29 each + shipping
• Advantages:
– Only requires one PWM cable
– Rated up to 10000 RPM
Mounting idea
Almost touching
the gear… needs
to be very close.
How to program encoders using
RobotC?
•
•
•
•
•
•
Wires into a Digital I/O port.
Will only tell number of rotations, not direction
Returns a 1 at a tip, returns a 0 at a valley
ROBOTC will take care of the counting for you.
Setup with Motors and Sensors Setup screen
Access with
– SensorValue[encoder1]
• Reset to zero with
– SensorValue[encoder1] = 0;
Encoder – Go Straight
• Last Week’s Notes
– Use Motors and Sensors Setup to configure
our encoders
– Clear the encoders before using them
– Program: Go straight using encoder feedback
•
•
•
•
If left wheel lags behind, slow down right wheel
If right wheel lags behind, slow down left wheel
If both wheels are equal, go an equal speed.
Use Three “If” statements