0% found this document useful (0 votes)
81 views3 pages

Sumocode

The document contains code for an autonomous robot that uses an ultrasonic sensor and line sensors to locate and attack an opponent robot. It initializes pins and variables, defines functions for motor control, scanning, and attacking. The main loop uses the ultrasonic sensor to check for opponents and line sensors to follow a line. If an opponent is detected, it will attack. If the line is detected, it returns to searching.

Uploaded by

trisha pacleb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views3 pages

Sumocode

The document contains code for an autonomous robot that uses an ultrasonic sensor and line sensors to locate and attack an opponent robot. It initializes pins and variables, defines functions for motor control, scanning, and attacking. The main loop uses the ultrasonic sensor to check for opponents and line sensors to follow a line. If an opponent is detected, it will attack. If the line is detected, it returns to searching.

Uploaded by

trisha pacleb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

// INITIALIZATION: delayMicroseconds(10);

#include "eGizmo_PBOT2018.h" digitalWrite(TRIGPIN,LOW);

#include<Wire.h>

DURATION= pulseIn(ECHOPIN,HIGH);

eGizmo_PBOT2018 PBOT; DISTANCE= DURATION*0.034/2;

return(DISTANCE);

//US-100 PIN ASSIGNMENT }

#define TRIGPIN 15 /******************************/

#define ECHOPIN 16 void loop()

float DISTANCE; {

float DURATION; float VALUE;

VALUE=ping(); // THE VALUE OF ULTRASONIC

int FULL_SPEED = 150; // FULL SPEED TO BUMP delay(10);


THE OPPONENT

int NORMAL_SPEED = 100; // NORMAL


SPEED // IF LINE IS DETECTED

int MAX_DISTANCE_DETECTION = 60; // DISTANCE if((PBOT.LS3_RIGHT() == LOW ||


TO DETECT THE OPPONENT PBOT.LS2_CENTER() == LOW) || PBOT.LS1_LEFT()
== LOW) //!!! HIGH kapag black
int MIN_DISTANCE_DETECTION = 0; ang ring, LOW kapag white

int FULL_STOP = 0; // HALT LINER=0;}

int LINER = 1;

boolean GO = false; // IF THERE IS NO LINE DETECTED AND THERE


IS NO ENEMY
/******************************/
while(LINER == 1 && VALUE >
void setup() MAX_DISTANCE_DETECTION) //IF LESS THAN
{ 20CM,SEARCH MODE.

Serial.begin(9600); {

Wire.begin(); STOP();

PBOT.BEGIN(); delay(200);

pinMode(TRIGPIN,OUTPUT); LOOKING_FOR_OPPONENT();

pinMode(ECHOPIN,INPUT); delay(200);

} break; }

// IF THERE IS AN ENEMY AND THERE IS NO


LINE DETECTED
int ping()
while((VALUE < MAX_DISTANCE_DETECTION &&
{ VALUE > MIN_DISTANCE_DETECTION) && LINER ==
1) // IF GREATER THAN ,ATTACK MODE!
digitalWrite(TRIGPIN,LOW);
{
delayMicroseconds(10);
ATTACK();
digitalWrite(TRIGPIN,HIGH);
delay(1000); PBOT.SERVO(1, 20);

break; } delay(500);

//WHILE THERE'S AN ENEMY, ATTACK MODE AND


IF LINE IS DETECTED IT WILL GO BACK.
OPPONENT_ON_RIGHT = ping();
while((VALUE < MAX_DISTANCE_DETECTION &&
VALUE > MIN_DISTANCE_DETECTION) && LINER == WHILE_SEARCHING_LINE_DETECTED();
0)

{ PBOT.SERVO(1, 160);
STOP(); delay(500);
delay(500);

GO_BACKWARD (); OPPONENT_ON_LEFT = ping();


delay(500); WHILE_SEARCHING_LINE_DETECTED();
SPIN_LEFT();

break; PBOT.SERVO(1, 90);


} delay(500);

// TURN AROUND IF LINE IS DETECTED OPPONENT_ON_CENTER= ping();


if(LINER == 0) WHILE_SEARCHING_LINE_DETECTED();
{ /*---------------------------*/
SPIN_LEFT(); if(OPPONENT_ON_RIGHT <=
delay(500); MAX_DISTANCE_DETECTION && LINER == 1 )

GO_FORWARD_SLOW(); {

} STOP();

LINER = 1; GO = true;

if(OPPONENT_ON_RIGHT <=
MAX_DISTANCE_DETECTION && GO == true){
PBOT.SERVO(1, 90); //SERVO TURNS 90 DEGREES
AFTER THE CONDITION WAS FINISHED SPIN_RIGHT();

delay(450);

} ATTACK();

delay(500);

/*---------------------------*/ GO = false;

// SERVO AND ULTRSONIC FUNCTIONS }

void LOOKING_FOR_OPPONENT () }

{ /*---------------------------*/

int OPPONENT_ON_LEFT; else if(OPPONENT_ON_LEFT <=


MAX_DISTANCE_DETECTION && LINER == 1)
int OPPONENT_ON_CENTER;
{
int OPPONENT_ON_RIGHT;
SPIN_LEFT();

delay(450);
ATTACK(); void SPIN_LEFT()

delay(500); {

} PBOT.DIRECTION(MOTOR_A,MOTOR_REV);

/*---------------------------*/ PBOT.DIRECTION(MOTOR_B,MOTOR_FWD);

else if(OPPONENT_ON_LEFT = PBOT.SPEED(MOTOR_BOTH, FULL_SPEED);


OPPONENT_ON_RIGHT)
}
{
/*---------------------------*/
GO_FORWARD_SLOW();
void SPIN_RIGHT()
delay(200);
{
}
PBOT.DIRECTION(MOTOR_A,MOTOR_FWD);
}
PBOT.DIRECTION(MOTOR_B,MOTOR_REV);
/*---------------------------*/
PBOT.SPEED(MOTOR_BOTH, FULL_SPEED);
// MOTOR CONTROL FUNCTION
}
void ATTACK()
//***********************************/
{
void WHILE_SEARCHING_LINE_DETECTED(){
PBOT.DIRECTION(MOTOR_BOTH,MOTOR_FWD);
if(PBOT.LS3_RIGHT() == LOW ||
PBOT.SPEED(MOTOR_BOTH, FULL_SPEED); PBOT.LS1_LEFT() == LOW)

} {

/*---------------------------*/ LINER=0;

void GO_FORWARD_SLOW() }

{ if(LINER == 0){

PBOT.DIRECTION(MOTOR_BOTH,MOTOR_FWD); GO_BACKWARD();

PBOT.SPEED(MOTOR_BOTH, NORMAL_SPEED); delay(500);

} SPIN_LEFT();

/*---------------------------*/ delay(500);

void GO_BACKWARD() GO_FORWARD_SLOW();

{ STOP();

PBOT.DIRECTION(MOTOR_BOTH,MOTOR_REV); }

PBOT.SPEED(MOTOR_BOTH, NORMAL_SPEED); LINER = 1;

/*---------------------------*/ }

void STOP() // PROGRAM ENDS AND LOOP BACK FOREVER

PBOT.DIRECTION(MOTOR_BOTH,MOTOR_REV);

PBOT.SPEED(MOTOR_BOTH, FULL_STOP);

/*---------------------------*/

You might also like