Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Voltage optimisation wikipedia , lookup
Mains electricity wikipedia , lookup
Immunity-aware programming wikipedia , lookup
Ground loop (electricity) wikipedia , lookup
Rectiverter wikipedia , lookup
Stepper motor wikipedia , lookup
Variable-frequency drive wikipedia , lookup
Pulse-width modulation wikipedia , lookup
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