Professional Documents
Culture Documents
Obstacle Avoid Robot
Obstacle Avoid Robot
#include <Servo.h>
void setup() {
// put your setup code here, to run once:
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorkif, OUTPUT);
pinMode(motorkib, OUTPUT);
pinMode(motorkaf, OUTPUT);
pinMode(motorkab, OUTPUT);
scanservo.attach(scanservopin); // Attach the scan servo
delay(2000); // wait two seconds
}
void loop() {
// put your main code here, to run repeatedly:
go();
int jarak = ping();
if (jarak<distancelimit){
stopp();
char turndir = scan();
switch (turndir){
case 'l':
turnleft();
break;
case 'r':
turnright();
break;
case 's':
turnaround();
break;
}
}
int ping(){
//Send Pulse
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
//Read Echo
duration = pulseIn(echoPin, HIGH);
// convert the time into a distance
distance = (duration/2) / 29.1;
return round(distance);
void go(){
digitalWrite(motorkif,HIGH);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,HIGH);
digitalWrite(motorkab,LOW);
}
void turnleft(){
digitalWrite(motorkif,LOW);
digitalWrite(motorkib,HIGH);
digitalWrite(motorkaf,HIGH);
digitalWrite(motorkab,LOW);
delay(500);
digitalWrite(motorkif,LOW);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,LOW);
digitalWrite(motorkab,LOW);
}
void turnright(){
digitalWrite(motorkif,HIGH);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,LOW);
digitalWrite(motorkab,HIGH);
delay(500);
digitalWrite(motorkif,LOW);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,LOW);
digitalWrite(motorkab,LOW);
}
void turnaround(){
digitalWrite(motorkif,HIGH);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,LOW);
digitalWrite(motorkab,HIGH);
delay(1000);
digitalWrite(motorkif,LOW);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,LOW);
digitalWrite(motorkab,LOW);
}
void stopp(){
digitalWrite(motorkif,LOW);
digitalWrite(motorkib,LOW);
digitalWrite(motorkaf,LOW);
digitalWrite(motorkab,LOW);
delay(1000);
}
char scan(){
//Look left
scanservo.write(178);
delay(300);
leftscanval = ping();
//Look right
scanservo.write(4);
delay(1000);
rightscanval = ping();
else{
choice = 's';
}
return choice;