0% found this document useful (0 votes)
147 views22 pages

GOTO - Beacon: Programming Concepts Part C

The document provides instructions for programming a robot to locate an infrared beacon using photo detectors. It describes the overall program structure, which contains three main functions in an infinite loop to read the photo detectors, find the maximum reading, and move the robot accordingly. It also explains the functions in more detail, describing how each one works and its purpose in helping the robot navigate to the beacon.

Uploaded by

周瑞濬
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
147 views22 pages

GOTO - Beacon: Programming Concepts Part C

The document provides instructions for programming a robot to locate an infrared beacon using photo detectors. It describes the overall program structure, which contains three main functions in an infinite loop to read the photo detectors, find the maximum reading, and move the robot accordingly. It also explains the functions in more detail, describing how each one works and its purpose in helping the robot navigate to the beacon.

Uploaded by

周瑞濬
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Programming Concepts

Part C
GOTO_Beacon

ENGR 10
Introduction to Engineering

1
Download the GOTO BEACON
program from the E10 website,
Robot lab section,

New controller
(Cortex)

2
Main() for GOTO_Beacon Program

Note: you need to change freq


for the beacon you want to find!

Global
Variables

Infinite loop

Call three functions

3
4
The main body of the GOTO_Beacon program
is an infinite loop with three functions in the loop

While Loop (1==1)


{
Read_PD(); //read 8 Photo-detector outputs
find_max(); //find the max detector output
move(); // move to the direction of max PD
}
PD4

PD7 PD0
Left side Right side

5
Read_PD()

This function reads the intensity of all 8 Infrared


Photo-Detectors and stores the
intensity (0 to 1023) into PD0~PD7
variables. It also produces the sum of
all 8 readings (PD_sum). The sensing
sensitivity is set by expose_time.

This function reads the intensity of either 1kHz or


10kHz infrared signal depending on
the setting of digital output port 10 on
Cortex, (0=1kHz , 1=10kHz). You
should set the digital output port #10 to
the intended frequency before this
function is called.

find_max()

This function determines which variable (among


PD0~PD7) has the greatest value. The PD
number is saved in the variable max_no.

6
move()

1. If PD_sum < Ambient (noise level, 200), the


robot spins at the speed spin_speed (50). If
PD_sum > Ambient (beacon is in view), go
forward at speed of forward_speed (35).
2. Turns the left wheel faster if max_no (PD #)
<4
3. Turns the right wheel faster if max_no > 4,
same speed if max_no = 4

4. Slows the forward motion to slow_speed if


PD_sum > slow_level (5000)

5. Stop if PD_sum > stop_level (6000)


Red beacon
PD4 PD0
PD7

7
Read_PD() Function

8
Find maximum intensity

9
find_max() Function

10
Move the robot

11
Move() Program

PD_sum<200, no
beacon in sight,
robot spins

PD_sum >5000,
robot slows down,
beacon is close

PD_sum >6000,
very close to
beacon, robot stops

Robot moves
toward beacon

12
limit_pwm() Program

13
Cortex Controller
PD2 reads max intensity  max_no = 2 
error = 4-2=2 
steer=error*steer_sensitivity=2*20=40

Motor1 speed = 0+40+35=75,


Motor10 speed=0+40-35=5,
if motor 1 is on the left side the robot turns
right

14
How to add to the GOTO_beacon
program to perform the required task?

Use state variable !

Somewhere here, when red


Initialization beacon is found, state=2.
No infinite loop in all blocks!

Read PD();
While Find red
Find Max();
state==1 beacon
Move ();

While Try to turn off red


state==2 beacon. when
confirmed, state=3

While Go to green
state==3 When found, state
=4

Find green
15
beacon
While Capture green (turn
off) ,
state==4 When confirmed.
state =5

While GO home,
state==7 When confirmed.
state =6

STOP

16
E10 robot, bumper switch
es, it wonders

Hsu/Youssefi 17
IR Receiver Board
Infrared
selector detectors
VEX
Controller 0
1
Intensity output
Exposure Tuning 2
AD1 amplifier 3
Control circuit 4
Frequency select sensitivity 5
AD14 6
7
counter
Exposure control 8
AD15 count 4
Reset to detector #0 2
AD16 reset 1

Circuit board
Board edge

Longer lead

Side view Top View

18
Beacon Frequency Selection
(filter)
Tuning circuit
amplifier

1kHz
To next
stage

From
previous
stage

AD14
Freq select (0=1kHz, 1=10kHz)

19
IR Detector Selection

Infrared
Detectors 1kHz

LEDs Selector
counter
To
next
stage

1
0
1

AD16 AD15
Counter pulse
reset 1 Increment count (0 to 1
transition)
1 Count output set to zero
0 Get ready to count
20
Beacon Frequency Selection
(filter)
Tuning circuit
amplifier

1kHz
To next
stage

From
previous
stage

AD14
Freq select (0=1kHz, 1=10kHz)

21
Exposure Control Circuit

From
previous Amplifier
stage

AD15
To AD1
(VEX
1 Clear ‘film’ (discharge C14) Analog
input)
0 Open ‘shutter’ (allow C14 to charge)

22

You might also like