Obstacle Prog 260708

download Obstacle Prog 260708

of 10

Transcript of Obstacle Prog 260708

  • 8/6/2019 Obstacle Prog 260708

    1/10

  • 8/6/2019 Obstacle Prog 260708

    2/10

    Function of each sensor

    - SENSOR1 : Left wall follower sensor

    - SENSOR2 : Left floor sensor- SENSOR3 : Front wall sensor

    - SENSOR4 : Right floor sensor

    - SENOSR5 : Right wall follower sensor

    - SENSORL : Senses whether there is wall on the left

    - SENSORR : Senses whether there is wall on the right

    IR sensors can easily be bent. Make sure it stays horizontal

    START(use buzzer or not);

    Initiation of robot program

    It lays initial setting and defines whether to turn on buzzer for debugging purpose.

    When the buzzer is set, the robot may tremble a little.

    1. To use buzzer or not: 0, 1

    - If 0: No buzzer

    - If 1: Buzzer sounds each time a function is completed (for debugging purpose)

    start(1); // sounds each time a function is completed (for debugging purpose)

  • 8/6/2019 Obstacle Prog 260708

    3/10

    DRIVER(speed ratio 1, speed ratio 2, speed ratio 3, speed ratio 4);

    Setting the method of following the wall

    Using Driver function, you can set how accurately the robot should follow the wall. The speed ratio

    should gradually decrease between 1 and 4. Overall higher values make robot sway less but also less

    accurate, while lower values make robot trace wall precisely but it is likely to sway more.

    driver (speed ratio 1, speed ratio 2, speed ratio 3, speed ratio 4);speed ratio: 0 ~ 20

    - You need to set driver with accuracy when collecting or discharging objects.

    - driver (20,15,10,5);

    - Other times, you may like to increase the straight tendency of robot to operate it in higher

    speed.

    - driver (20,18,15,13);

    FFSPEED, BBSPEED(left motor speed, right motor speed);

    Balancing the motor speed

    It balances speed of motors. When moving forward or backward, you decrease the speed of motor with

    higher RPM. In the motor Function, you achieve it by increasing the parameter value of the motor with

    higher RPM.

    ffspeed (left motor forward speed value, right motor forward speed value);

    bbspeed (left motor backward speed value, right motor backward speed value);

    1. left motor forward speed value, left motor backward speed value: 0 ~ 255;

    2. right motor forward speed value, right motor backward speed value: 0 ~ 255;

    - If robot sways left moving forward, you gradually increase the parameter of right motor speed

    - If robot sways right moving forward, you gradually increase the parameter of left motor speed

    - If robot sways left moving backward, you gradually increase the parameter of right motor speed

    - If robot sways right moving backward, you gradually increase the parameter of left motor speed

    Example

  • 8/6/2019 Obstacle Prog 260708

    4/10

    Ex1) If robot sways left, moving forward

    ffspeed(0,13);// Increase parameter of right motor speed value

    motor(20,20,500);// Check whether it moves straight for 0.5 second

    Ex2) If robot sways right, moving forward

    ffspeed(21,0);// Increase parameter of left motor speed value

    motor(20,20,500);// Check whether it moves straight for 0.5 second

    Ex3) If robot sways left moving backward

    bbspeed(0,18);// Increase parameter of right motor speed valuemotor(-20,-20,500);// Check whether it moves straight for 0.5 second

    Ex4) If robot sways right moving backwardbbspeed(0,18);// Increase parameter of left motor speed value

    motor(-20,-20,500);// Check whether it moves straight for 0.5 second

    GROUND(value of sensor2, value of sensor4);

    Sensing the pitfalls

    Functions as motor, line, inmotor and outmotor work with walls only. Ground function is used to make

    robot stop when it comes to pitfalls. When values for light amount are given to floor sensors No.2 and

    4, robot stops function when its reading is lower than the given value. It applies to the functions after

    the Ground function. Since Ground function applies to all functions except bline, you will need to

    reset with ground(0,0); if you do not want to use this function.

    1.Value of sensor2: 0, 1 ~ 160

    2.Value of sensor4: 0, 1 ~ 160

    - If 0: Not using ground function

    - If 1 ~ 160: Robot stops when its reading is lower than pre-set value.

    Example

    ground(0,0); Sensing pitfalls not defined.

    motor(20,20,1000); Run motors without setting pitfall sensing

    ground(120,0); Set the value of light amount for sensor2 as 120

    motor(20,20,1000); Robot stops when sensor No. 2 senses pitfall.

    ground(120,120); Set the value of light amount for sensor 2 and 4 as 120

    motor(20,20,1000); Robot stops when sensor No. 2 and 4 sense pitfall.

    MOTOR(left motor speed, right motor speed, run time);

    Running motors

    It is used to run the motors

    1. Left motor speed: -20 ~ 20

    2. Right motor speed: -20 ~ 20

    3. Run time: 0 ~ 65000 (100=0.1 sec)

    motor(20,20,500); // Move robot forward for 0.5 second

    motor(0,0,500); //Halt robot for 0.5 second

    motor(-20,-20,500); //Move robot backward for 0.5 second

    motor(0,0,500); //Halt robot for 0.5 second

    DELAY_MS(delay time);

    Delay

    It maintains action for the time given.

    1. Delay value: 0 ~ 65000 (100 =0.1 second)

  • 8/6/2019 Obstacle Prog 260708

    5/10

    LINE(front sensor value, wall distance value, moving direction, speed, forward run time);

    Basic function for sensing walls

    This is the most basic function which sets moving direction, speed, etc., by sensing the walls. Sensor1

    and Sensor5 can sense left and right walls, respectively. You need to set run time if you want the robot

    to move further after the task has been completed. Front sensor value and wall distance value does

    NOT represent actual distance but the amount of IR ray received. The amount varies depending on the

    color of walls.

    line (front sensor value, wall distance value, moving direction, speed, forward run time);

    1. front sensor value: 0, 1 ~ 160

    - If 0: No wall in front

    - If 1 ~ 160: Higher the value, higher the amount of IR ray. If you want robot to halt near the wall,

    set a high value.

    2. wall sensor value: 1 ~ 160 (constant), SS1, SSL, SS5, SSR (sensor value)

    - Using constant: Robot traces wall using the value 1 ~ 160. (Higher the value, higher the amount of

    IR ray.)

    - Using sensor: Given sensors, SS1, SSL, SS5, SSR, robot traces the wall using the initial reading ofdistance. (The current value of IR ray amount is stored in SS1, SSL, SS5 and SSR.)

    3. Moving direction: FL, FR, LL, RR

    - FL: Robot follows left wall using sensor 1. The task is completed when sensorL does not sense the

    wall.

    -FR: Robot follows right wall using sensor 5. The task is completed when sensorR does not sense

    the wall.

    - LL: After completing FL action, robot turns left until the pre-set sensor1 value is met.

    - RR: After completing FR action, robot turns right until the pre-set sensor5 value is met.

    4. Speed: 0 ~ 20

    5. forward run time: 0 ~ 65000 (100=0.1sec)

    In case of LL or RR, forward run time has to be defined in order for the robot to clear the corner.

    Example

  • 8/6/2019 Obstacle Prog 260708

    6/10

    LEFT, RIGHT(moving speed);

    Left turn, right turn

    The robot spins left or right on the spot. Spinning action involves two motors rotating opposite direction

    in given speed. Since this function uses sensor to spin, the spinning radius can differ depending on the

    wall color. The spinning angle may not be consistent,

    1. moving speed: 0 ~ 20

    Examples:

  • 8/6/2019 Obstacle Prog 260708

    7/10

    LINEDELAY(sensor selection, wall distance sensor value, speed, moving time);

    Following wall for the given time

    Robot will follow the wall for the given time, but without considering wall distance. It is recommended

    to use linedelay function before using Line function, to prevent robot from going out of the way.

    1. sensor selection: SENSOR1,SENSORL,SENSOR5,SENSORR

    2. wall distance sensor value: 1 ~ 160 (constant), SS1, SSL, SS5, SSR (sensor value)- Using constant:

    Follows wall using the given constant value. (higher value, higher amount of IR ray)

    - Using sensor:

    Given sensors, SS1, SSL, SS5, SSR, robot traces the wall using the initial reading of distance.

    (The current value of IR ray amount is stored in SS1, SSL, SS5 and SSR.)

    3. moving speed: 0 ~ 20

    4. Moving time: 0 ~ 65000 (100=0.1sec)

    INMOTOR, OUTMOTOR(sensor selection, wall distance sensor value, left motor speed, right

    motor speed);Running motors using sensor

    This function enables you to run both motors using the pre-set value of light amount. As for inmotor,

    robot stops when its reading is bigger than wall distance sensor value, whereas outmotor makes robot

    stop when its reading is smaller than wall distance sensor value.

    1. Sensor selection: sensor1, sensorL, sensor5, sensor

    2. Wall distance sensor value: 1 ~ 160

    - If inmotor, robot stops when sensor reading is higher than pre-set value.

    - If outmotor, robot stops when sensor reading is lower than pre-set value.

    3. Left motor speed: -20 ~ 204. Right motor speed: -20 ~ 20

    inmotor(SENSOR3,100,-20,20);

  • 8/6/2019 Obstacle Prog 260708

    8/10

    BLINE(value of sensor reading front, left and right, speed, motor delay after sensing);

    Passing bridges

    Your robot can go over bridges without falling, using sensors 2 and 4 (left and right). When a sensor

    recognize a drop, it runs opposite side motor backwards for the given delay time. When BLine function is

    used, your robot stops when the reading from front sensor3, left sensor1 or right sensor5 exceeds the pre-set

    amount of light.

    1. Value of light amount from sensors front, left and

    right: 1 ~ 160

    2. Speed: 0 ~ 20

    3. Motor delay after sensing: 0 ~ 65000 (100=0.1sec)

    - When a sensor recognize a drop, the opposite side

    motor will run backwards so that the robot can safely

    pass the bridge.

    Example

    Bline(100,20,200); The function ceases when the

    reading of light amount at sensors 1, 3 or 5 exceeds

    100. It will turn for about 0.2 seconds.)

    BUZZER, LED(Times, On time, Off time);

    Turning on buzzer, led

    This function is used when you control buzzer or LED. You can set the number of times, On time and

    Off time respectively. The last Off time is disregarded.

    Buzzer(Times, On time, Off time);

    Led(Times, On time, Off time);

    1. Times: 0 ~ 255

    2. On time: 0 ~ 65000 (100=0.1sec)

    3. Off time: 0 ~ 65000 (100=0.1sec)

    Example

    Ex1) Make buzzer sound 2 times at 1 second interval

    Buzzer(2,1000,1000);

    - On 1 second > Off 1 second > On 1 second > Finish (total 3 seconds)

    Buzzer(2,1000,100);

    - On 1 second > Off 0.1 second > On 1 second > Finish (total 2.1 seconds)

    Ex2) Turn on the LED 3 times at 0.5 second interval

    led(2,500,500);

    - On 0.5 second > Off 0.5 second > On 0.5 second > Off 0.5 second > On 0.5 second > Finish (total 2.5

    seconds)led(2,500,100);

    - On 0.5 second > Off 0.1 second > On 0.5 second > Off 0.1 second > On 0.5 second > Finish (total 1.7

    seconds)

  • 8/6/2019 Obstacle Prog 260708

    9/10

    BUZZERLED(use buzzer?, use LED?, Times, Interval);

    Turning on buzzer and LED at the same tiem

    The function is used when you control buzzer and LED at the same time. Operation times and interval

    can be set. The last Off time is disregarded.

    1. Use buzzer or not: 0, 1

    - 0: Not using buzzer- 1: Using buzzer

    2. Use LED or not: 0, 1

    - 0: Not using LED

    - 1: Using LED

    3. Times of operation: 0 ~ 255

    4. Operation interval: 0 ~ 65000 (100=0.1 sec)

    Ex1) Turn on buzzer and LED twice at the same time at 1 second interval.

    buzzerled(1,1,2,1000);

    On 1 second > Off 1 second > On 1 second > Finish (total 3 seconds)

    Ex2) Turn on buzzer only twice at 1 second interval

    buzzerled(1,0,2,1000);

    On 1 second > Off 1 second > On 1 second > Finish (total 3 seconds)

    Ex3) Turn on LED only twice at 1 second interval

    buzzerled(0,1,2,1000);

    On 1 second > Off 1 second > On 1 second > Finish (total 3 seconds)

    SERVO(servo motor value);MOTOR1, MOTOR2 (Turning direction);

    Servo operation + Motor1 + Motor2

    This function is to control RC servo motors. 4 ports are available for servo motors.

    You can operate DC motor, too, if you put DC motor driver, instead of Servo, in which case the DC

    motor will run at the maximum speed without speed control.

    Servo1(servo motor value); 01 port

    Servo2(servo motor value); 02 port

    Servo3(servo motor value); 03 port

    Servo4(servo motor value); 04 port

    1. servo motor value: 0 ~ 100

    motor1(Turning direction); 01 + 02 port

    motor2(Turning direction); 03 + 04 port

    1. Turning direction: -1, 0, 1

    - If -1: turning reverse

    - If 0: stop

    - If 1: turning

    Ex1)Servo1(0); The servo at 01 port will stop at position 0.

    Servo2(50); The servo at 02 port will stop at position 50.

    Motor2(1); The motors connected to Motor Driver at port 03 and 04 will turn

  • 8/6/2019 Obstacle Prog 260708

    10/10

    IN1, IN2

    Taking sensor input

    You can receive input from IR sensor, Contact sensor, etc. using this function.

    Ex1) Runnig a motor by pressing contact sensor at IN1 port

    while(1)

    {if(IN1)

    {

    motor(20,20,10);

    }

    else

    {

    motor(0,0,0);

    }

    }

    Ex2) Running motor when both IN1 and IN2 are pressed at the same time

    while(1)

    {

    if(IN1&&IN2)

    {

    motor(20,20,10);

    }

    else

    {

    motor(0,0,0);

    }}

    Ex3) Running motor when either IN1 or IN2 was pressed.

    while(1)

    {

    if(IN1 II IN2)

    {

    motor(20,20,10);

    }

    else

    {motor(0,0,0);

    }

    }

    Ex4) Making motor run when IN1 is not pressed and making it stop when IN1 is released

    while(1)

    {

    if(IN1==0)

    {

    motor(20,20,10);

    }else

    {

    motor(0,0,0);

    }

    }