Salah satu hal yang jadi permasalahan dari pembuatan robot ini adalah harga rangka akrilik yang masih mahal, untuk mengakalinya mungkin kamu bisa membuatnya dengan bahan dan peralatan yang ada. Oke mari kita buat!!
Alat dan Bahan:
- Arduino Uno
- Adafruit Motor Driver L293D
- Rangka/chasis akrilik
- 2 buah geared motor + ban
- Kotak baterai
- Ban tengah yang dapat berputar (gak tau namanya :p)
- Sensor Ultrasonik
- Saklar
- Beberapa buah baut + spacer
- 4 buah baterai AA
- Kabel secukupnya
Merangkai Chasis:
- Berhubung saya membeli rangka satu paket beserta dc motor dan lainnya, jadi tinggal mengikuti instruksi yang ada di panduannya, tapi untuk gambaran silahkan lihat foto2 dibawah!
Koneksi Kabel:
- Baterai → Saklar → EXT_PWR (Motor Driver Shield)
- VCC Sensor Ultrasonik → 5v
- GND Sensor Ultrasonik → GND
- Trig Sensor Ultrasonik → Pin 12
- Echo Sensor Ultrasonik → Pin 13
- Motor 1 → M1 (Motor Driver Shield)
- Motor 2 → M2 (Motor Driver Shield)
Untuk motor tidak perlu khawatir terbalik kabelnya, jika pada saat nanti dinyalakan ada salah satu motor ada yang bergerak mundur tinggal dibalik kabelnya. Karena seharusnya pada saat dinyalakan semua motor bergerak maju dengan patokan sensor ultrasonik lah yang berada didepan.
Source Code:
/* Code Written by Roy Pe'er. I've explained all the code in the grey comments.
I recommend you to go over the code, examine it, play with it, improve it and modify it according to your needs.
For more awesome videos, subsrice to my channel:
http://www.youtube.com/subscription_center?add_user=Roypeer1
*/
#include <AFMotor.h> //import your motor shield library
#define trigPin 12 // define the pins of your sensor
#define echoPin 13
AF_DCMotor motor1(1,MOTOR12_64KHZ); // set up motors.
AF_DCMotor motor2(2, MOTOR12_8KHZ);
void setup() {
Serial.begin(9600); // begin serial communitication
Serial.println("Motor test!");
pinMode(trigPin, OUTPUT);// set the trig pin to output (Send sound waves)
pinMode(echoPin, INPUT);// set the echo pin to input (recieve sound waves)
motor1.setSpeed(105); //set the speed of the motors, between 0-255
motor2.setSpeed (105);
}
void loop() {
long duration, distance; // start the scan
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // delays are required for a succesful sensor operation.
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //this delay is required as well!
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;// convert the distance to centimeters.
if (distance < 25)/*if there's an obstacle 25 centimers, ahead, do the following: */ {
Serial.println ("Close Obstacle detected!" );
Serial.println ("Obstacle Details:");
Serial.print ("Distance From Robot is " );
Serial.print ( distance);
Serial.print ( " CM!");// print out the distance in centimeters.
Serial.println (" The obstacle is declared a threat due to close distance. ");
Serial.println (" Turning !");
motor1.run(FORWARD); // Turn as long as there's an obstacle ahead.
motor2.run (BACKWARD);
}
else {
Serial.println ("No obstacle detected. going forward");
delay (15);
motor1.run(FORWARD); //if there's no obstacle ahead, Go Forward!
motor2.run(FORWARD);
}
}
[…] http://www.prinsipkerja.com/arduino/membuat-robot-obstacle-avoider-tanpa-servo Membuat Robot Obsyacle Avoider Tanpa Servo Membuat Robot Obsyacle Avoider Tanpa […]
ReplyDelete