0% found this document useful (0 votes)
30 views

Programming Concepts: (Part B)

The document discusses programming concepts including logic statements, functions, and variables. It describes the most common logic statements - IF, IF-ELSE, and WHILE loops. Functions are defined as reusable blocks of code that reduce overall program size. Local variables store values passed into a function and are only accessible within the function. The document also covers mechanical components like motors and servos. Motors provide continuous or servo rotation controlled by speed, while servos control position within a limited range defined by values from -127 to 127. Programming statements like SetMotor and SetServo are used to control motor and servo direction and rotation.

Uploaded by

周瑞濬
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Programming Concepts: (Part B)

The document discusses programming concepts including logic statements, functions, and variables. It describes the most common logic statements - IF, IF-ELSE, and WHILE loops. Functions are defined as reusable blocks of code that reduce overall program size. Local variables store values passed into a function and are only accessible within the function. The document also covers mechanical components like motors and servos. Motors provide continuous or servo rotation controlled by speed, while servos control position within a limited range defined by values from -127 to 127. Programming statements like SetMotor and SetServo are used to control motor and servo direction and rotation.

Uploaded by

周瑞濬
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 52

Programming Concepts

(Part B)

ENGR 10
Introduction to Engineering

Hsu/Youssefi 1
Summary
Most commonly used logic statements:

IF statement (for one case only)


IF – ELSE statement (for two cases only)
ELSE – IF statement (for more than two cases)
WHILE loop (finite or infinite) statement

Ken Youssefi/Ping Hsu Introduction to Engineering – E10 2


Functions
What is a function?
Function is just a group of code given a name. By
grouping and naming it we can reuse it any where in the
application without having to rewrite the whole block of
code again.

Why use a function?


It saves time and reduces the overall code size of your
program. But more importantly, if there is a problem you
only have to fix it in one place.

The following example shows how to write a function and


how to call that function
MAX_Three  find the maximum of 3 numbers
Hsu/Youssefi 3
How to Define a Function in easyC V4
Right click on
User Functions
and select Add
New Function

Name the function


(Max_Three and select
Return Type (Int)

Hsu/Youssefi 4
Sequential execution of main program
which calls the defined function
A, B, C, Z1, and Z2 are defined as global variables
Main Program

Function
Hsu/Youssefi 5
Introduction to Local Variable
• The MAX_Three function finds the greatest of the
three numbers A, B and C.

• These variables were defined as global variables.

• Before this function is called, your program must


have copied the values into these three variables.

• This operation can be done more efficiently by


using local variables.

Hsu/Youssefi 6
Program using Function with
passing variables x, y, and z are defined as
Local variables

A, B, and C are NOT


defined as global variables

Hsu/Youssefi 7
What is a Local variable ?
• The value of a local variable is accessible only to
the function within which it is defined.
• The main function (main program) passes the
values into the function and these values are
copied into the local variables of the function.
• The function doesn’t care what are the names of
the variables defined in the main function.
• The function does what it should do and then
returns the result to the main function.
• The values of these local variables are lost after
the execution of the function is completed.

Hsu/Youssefi 8
Global Variable Concept
A, B, C, and Z are Main Function
defined as global
variables
Defined Function

A Task of
B the Z
function
C

Hsu/Youssefi 9
Local Variable Concept
Main Function

Defined Function
x, y, and z are defined
as Local variables

A x Task of
the max Z
B y
function
C z

Hsu/Youssefi 10
Mechanical Components – Motors
Clutch 1. Motor, continuous rotation of
the shaft (3 wire)
Motor
(Continuous) 2. Servo, shaft rotates through
a specified angle (3 wire)

Make sure the clutch


module is always used. It
prevents damage to the Servo
motor in case of large
torque (resistance to
motion).
Hsu/Youssefi 11
Mechanical Components – Motor (New)
The new motor has two wires (2-wire motors). It can be converted
to a 3-wire motor using the controller 29. Ports 1 and 10 on the
controller are designated for 2-wire motors only.

3 pins

2 pins
Hsu/Youssefi 12
This chart describes
the combination of
the motor movement
required to perform
each maneuver

Hsu/Youssefi 13
How to connect the motor to the
Controller?
• On the VEX controller you have several ports
available so that you can connect not only
motors but also other devices and sensors to it.
PORT:
• A port is a specific place on the board where we
can connect other external devices, so that the
two devices in connection can exchange
information or data.

Hsu/Youssefi 14
Continuous Motor Choose motor
number, as connected
to the Controller Max. speed
counter clockwise

Select Motor, drag


and drop on the
line between Begin
and End

Custom Max. speed


speed clockwise

Hsu/Youssefi 15
How to move a motor?
• Use the following statement to move a motor

SetMotor ( 2 , 60 );

This number indicates This number sets the


that the motor is direction and speed
connected to motor of the motor
port 2 of the total
available 10 ports
Hsu/Youssefi 16
Motor and
Controller (Cortex) Servo ports

8 analog and
12 digital
ports. Digital
ports are
used for Limit,

X
Bumper and
connected to the IRB Ultrasonic
mounted on the robot
Hsu/Youssefi sensors 17
Side view of the VEX Controller

Battery Ports (Square and


round connectors)

Hsu/Youssefi 18
Cortex
Two continuous motors
to drive the robot (2-pin)

Two 3-Wire motors to


operate the claw and the arm
(3-pin)

Hsu/Youssefi 19
Program to move the robot forward
• Now let us write a program to make the robot
move forward for 2 seconds and then stop.

Assume:
Left Motor – connected to motor port 3
Right Motor – connected to motor port 2

Hsu/Youssefi 20
Program to make the motor move
forward for 2 seconds and then
stop

Hsu/Youssefi 21
Clicker Question 3
What value of x will cause the motor for Cortex
controller to be stopped: SetMotor(2, x)?
A. 64
B. 127
C. 0
D. 255
E. -127

Hsu/Youssefi 22
Servos
• Servo units are similar to motors except that they
control position rather than speed.
• Servo units have limited range of motion
(about 120o)
• A value between (-127) and (127) sets
the direction of the servo.

(127) – Extreme counter clockwise direction


(0) – No movement
(-127) – Extreme clockwise direction
Hsu/Youssefi 23
Graphical representation of the
direction of rotation of the Servo
0o

0

60o -60o

127 -127

Hsu/Youssefi 24
Servo
• Similar to the motor the following statement is
used to set the servo to turn to a direction.
SetServo ( 5 , 64 );

Indicates the motor


port number to which This value sets the
the servo is direction and the rotation
connected. of the servo
Hsu/Youssefi 25
SetServo (5 , 64) - EasyC
Motor shaft rotates 30o clockwise and then stops

clo
i se 0o ckw
oc kw ise
r-c l 
u nte 0
30o
Co
 64

600 -60o

127 -127

Hsu/Youssefi 26
Program showing how to move
the servo continuously

Hsu/Youssefi 27
Output of the above program

se
clo
c kw i
0o
ckw
lo ise
te r-c 
n
 Cou -30o
0 30o

-64 64

60o - 60o

127 -127

Hsu/Youssefi 28
Mechanical Components - Sensors

Sensor
blocks

Limit Switch Sensor (Digital)

Ultrasonic Sensor
(Digital)

Bumper
Hsu/Youssefi Switch Sensor (Digital) 29
Introduction to Logic Signals
• A logic signal can take on either 0 volt or 5 volt

→ 0v represents “Low state” or “Logic 0”


→ 5v represents “High state” or “Logic 1”

A logic signal can also be called a “digital signal”

Hsu/Youssefi 30
Bumper/Limit Switch
• A Bumper/Limit Switch is a digital sensor.

• It can distinguish between two states:


pressed or not pressed (On or Off)
• When the switch is not pressed, the robot
interprets this value as a 1 (high state).
• When the switch is pressed the robot
interprets the value as a 0 (low state).

Hsu/Youssefi 31
Bumper & Limit Switches
• Use of the following statement in the program
to read the bumper/limit switch.

Bumper = GetDigitalInput ( 2 );

A variable into which the This indicates the port


status of the number to which the
bumper/limit switch will bumper/limit switch is
be stored. connected

Hsu/Youssefi 32
Program to make the robot stop and turn for 2 seconds
when it hits an obstacle

stores the state of the bumper


switch into the variable “bumper”.

checks if there is a contact with


an obstacle (switch will be
pressed if there is a contact)

motor moves forward as long as


there is no obstacle (bumper ==1)

if the switch is pressed


(bumper==0), these statements
make the robot halt for 1 second

Then the robot turns left for 2


seconds (green arrow is ccw)
Hsu/Youssefi 33
Digital Output
• The “Digital output” function can be
used to control the state of a digital
output.
• By using this function you can send
digital signals (either 0 or 1) to the
devices which can accept digital
signals.
• For example, by using this function
you can turn off or on an LED.
1 => 5v => light is on
0 => 0v => light is off
Hsu/Youssefi 34
Drag and drop the
Digital Output
Port # List of the
output port #

Set the output


signal (range),
0 or 1

Hsu/Youssefi 35
Digital Output
• This statement is used in the program to
control the devices i.e., send digital signals.
SetDigitalOutput ( 11 , 1 );

Indicates the port The digital value to be


number (here port 11) to sent (either 0 or 1)
which the device to be
controlled is connected
Hsu/Youssefi 36
Program to make an LED
blink continuously

Hsu/Youssefi 37
Ultrasonic Sensor
• The Ultrasonic Sensor is a digital sensor.
• The Ultrasonic Sensor uses high-frequency
sound waves to detect objects.
• It emits a sound wave, measures how long it
takes the sound wave to bounce back, and then
calculates how far away the object is.
• The measurement is translated into a numeric
value from 2 - 100.
• Lower signal value corresponds to a closer
detected object and vice versa.
Hsu/Youssefi 38
Ultrasonic Sensor Connections

Digital
Input
Output port

Digital Input
port Output
(Interrupt port)

VEX Controller Ultrasonic Sensor


Hsu/Youssefi 39
Ultrasonic Sensor
The following statement starts an ultrasonic sensor i.e., the
sensor starts sending and recording the sound signals.
Sensor connected to output port 6
StartUltrasonic ( 5, 6 ) ; through which it receives digital
control signals from the controller.
Sensor connected to
input port 5
Select start

Hsu/Youssefi 40
Ultrasonic Sensor
The following statement is used to read a value from the sensor
Range = GetUltrasonic ( 5 , 6 );
Variable into The sensor is connected
which the Input to Ultrasonic to output port # 6 on the
translated value is port #5 controller
stored
Select Get option

Define variable Range,


(2-100)

Hsu/Youssefi 41
Changing Input port to Output port Edit Config

Change port 6
from input to
output by clicking
on the circle

Digital ports
taken by
the IRB

Hsu/Youssefi 42
Input to Ultrasonic sensor
connected to output port 6
on controller
Output from Ultrasonic
sensor connected to
input port 5 on controller

Checking if the obstacle is near


or far

Hsu/Youssefi 43
Analog Signals
• For the VEX controller, an analog signal can take any
value between 0v and 5v.
5v 1023
→ 0v is represented by a value 0
→ 5v is represented by a value 1023 (210)

• All other voltage levels between 2.5v 511

0v and 5v are represented by the


numbers between 0 and 1023.
0v 0

Hsu/Youssefi 44
Light Sensor
• A light sensor is an example of an analog sensor.
• A light sensor reads the intensity of light of an
area, translates the reading into a single
numeric value, and sends that value to the
robot.
• The range of values used by this sensor is
0-1023
• The higher the value, the darker will be the area
and vice versa.

Hsu/Youssefi 45
Light sensor
• The following statement is used to read the
analog signal from a light sensor.

light = GetAnalogInput ( 1 ) ;

A variable named “light” Indicates the port number


into which the reading (here port 1) to which the light
(0-1023) from the light sensor is connected
sensor is stored

Hsu/Youssefi 46
Program to make the robot move
towards the moving light source
ELSE IF is used for more than 2 cases

If light intensity is more on


the left side, the robot
turns toward the left side

If light intensity is more on


right side, the robot turns
toward the right side

If light intensity is the same


on both sides, the robot
moves forward

Hsu/Youssefi 47
Optical Shaft Encoder
• The optical shaft encoder is a digital sensor. It is
used to measure rotational movement.
• As the disc rotates, an infrared light sensor is used
to count the number of slots passed.
• A count of 90 makes one revolution.

Disc with 90 equally spaced slots

Hsu/Youssefi 48
Optical Shaft Encoder
• The following statement is used to start the encoder
counting.

StartEncoder ( 2 ) ;

This number indicates that the


encoder is connected to interrupt
port # 2 on the VEX controller

Hsu/Youssefi 49
Optical Shaft Encoder
• The following statement is used to get the
present count value from the encoder.

Count = GetEncoder ( 2 ) ;

A variable named “count” Interrupt port # 2 to


into which the present which the Encoder is
count value will be stored connected

Hsu/Youssefi 50
PresetEncoder ( 2, 20) ;
This statement is used to make the encoder start
counting from a given number (here 20) instead
of from zero.

Example
Write a program to make the robot move
for 1 meter and then stop.
Assume 5 turns of the wheel = 1 meter

Hsu/Youssefi 51
Program to make the robot
move forward for 1 meter

Presetting the encoder to 20.


Count value starts from 20.

if count reaches 470 the


0 robot stops.
470 = 450 (count for 5 turns
0
x 90) + 20 (initial value)

Hsu/Youssefi 52

You might also like