How To Build An Obstacle Avoiding Robot
Alat dan Bahan yang dibutuhkan :
1x Arduino Uno
1x Ultra Sonic Sensor
1x Motor Driver L298N
4x Motor DC (Sebagai Roda)
1x Battery +9V for Motor L298N
1x Battery +9V for Arduino UNO
Kabel jumper secukupnya
Langkah-langkahnya :
1. Susun rangkaian seperti gambar berikut :
Keterangan Konfigurasi Kabel :
· Hubungkan Pin Vcc Ultrasonic Sensor ke Pin +5V Arduino
· Hubungkan Pin Echo Ultrasonic Sensor ke Pin 3 Arduino
· Hubungkan Pin Trigger Ultrasonic Sensor ke Pin 2 Arduino
· Hubungkan Pin Ground Ultrasonic Sensor ke Pin Ground Arduino
· Hubungkan Pin IN1 L298N ke Pin 7 Arduino
· Hubungkan Pin IN2 L298N ke Pin 6 Arduino
· Hubungkan Pin IN3 L298N ke Pin 5 Arduino
· Hubungkan Pin IN4 L298N ke Pin 4 Arduino
· Solder Pin Motor DC (Contoh lihat pada Gambar diatas)
· Hubungkan +12V Motor Driver L298N ke +9V Battery
· Hubungkan Ground Motor Driver L298N ke Battery dan Ke Pin Ground Arduino
1. Jalankan program Arduino-nya.
2. Klik menu "Tools -> Board -> Arduino Uno"
3. Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda )
4. Lalu masukan Sketch dibawah ini.
#include <NewPing.h>
#define TRIGGER_PIN 2 // Arduino pin tied to trigger pin on ping censor(CENTER censor)
#define ECHO_PIN 3 // Arduino pin tied to echo pin on ping censor(CENTER censor)
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
unsigned int pingSpeed = 50;
unsigned long pingTimer; // Holds the next ping time.
int distance;
int distanceL;
int distanceR;
//MotorSetting; Using DFRobot L298 2A Motor Controller
int M1 = 4;
int E1 = 5;
int M2 = 7;
int E2 = 6;
int pwm_speed;
int speedVal = 255;
//char command = '\0';
void setup() {
Serial.begin(9600); // Open serial monitor at 9600 baud to see ping results.
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
pinMode(10, OUTPUT);
delay(250);
}
void loop() {
distance = sonar.ping_cm();
Serial.println(distance);
if (distance > 25){
Drive("Forward");
Serial.println("maju");
}
else if (distance < 25 && distance > 10)
{
Drive("TurnRight");
delay(250);
Drive("Stop");
distanceR = sonar.ping_cm();
Drive("TurnLeft");
delay (250);
Drive ("Stop");
distanceL = sonar.ping_cm();
if (distanceR > distanceL) {
Drive ("TurnRight");
Serial.println("kanan");
delay (250);
Drive ("Forward");
}
else {
Drive ("TurnLeft");
Serial.println("kiri");
delay (250);
Drive ("Forward");
}
}
else {
Drive ("Backward");
Serial.println("mundur");
delay (100);
Drive ("Stop");
}
}
//Mechatronic and Robotic//
//Electrical Engineering//
//Malikussaleh of University//
/////////////////Directions Setup/////////////////////////
void Drive(String Direction) {
if (Direction == "Backward") {
// Serial.println("Backward");
analogWrite(E1, 255);
analogWrite(E2, 255);
digitalWrite(M1, LOW);
digitalWrite(M2, LOW);
}
if (Direction == "Forward") {
// Serial.print("Forward");
analogWrite(E1, 255);
analogWrite(E2, 255);
digitalWrite(M1, HIGH);
digitalWrite(M2, HIGH);
}
if (Direction == "Stop") {
//Serial.print("Stop");
analogWrite(E1, 0);
analogWrite(E2, 0);
}
if (Direction == "TurnRight") {
//Serial.print("Turning Right");
analogWrite(E1, 255);
analogWrite(E2, 255);
digitalWrite(M1, LOW);
digitalWrite(M2, HIGH);
}
if (Direction == "TurnLeft") {
// Serial.print("Turning Left");
analogWrite(E1, 255);
analogWrite(E2, 255);
digitalWrite(M1, HIGH);
digitalWrite(M2, LOW);
}
}
void test_speed() {
// constrain speed value to between 0-255
if (speedVal > 250) {
speedVal = 255;
Serial.println(" MAX ");
}
if (speedVal < 0) {
speedVal = 0;
Serial.println(" MIN ");
}
}
//--------------------------------------
/*
long microsecondsToCentimeters(long microseconds) {
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
//return microseconds / 29 / 2;
return microseconds / 10; //basically 58
}*/
/////////////////////////////////////////////////////////////////////////
Posting Komentar - Back to Content