Line Follower adalah robot mobil sederhana dan cocok pemula. Robot yang berjalan di sepanjang garis menggunakan sensor iR. Sensor memiliki dua dioda, satu dioda mengirimkan cahaya inframerah, dioda lainnya menerima cahaya yang dipantulkan dari permukaan. Ketika sinar inframerah jatuh di permukaan putih, sinar dipantulkan kembali. Ketika cahaya infra merah jatuh pada permukaan hitam, cahaya diserap oleh permukaan hitam dan tidak ada sinar yang dipantulkan kembali, sehingga fotodioda tidak menerima cahaya apapun. Sensor mengukur jumlah cahaya yang dipantulkan dan mengirimkan nilainya ke arduino.
Untuk pengaturan sensitivitas sensor dapat kita atur pada Potensiometer yang ada pada sensor. Arduino berfungsi untuk membuat keputusan berdasarkan data yang diterima dari sensor. Jika sensor tidak mendeteksi garis hitam maka robot akan maju. Jika sensor kiri mendeteksi garis hitam, robot berbelok ke kanan, dan jika sensor kanan mendeteksi garis hitam, robot berbelok ke kiri. Robot akan berhenti ketika kedua sensor mendeteksi warna hitam.
Mudah-mudahan project ini bermanfaat dan dapat dikembangkan menjadi lebih baik dan dapat dimanfaatkan untuk kehidupan sehari-hari.
#define in1 7
#define in2 6
#define in3 9
#define in4 8
#define enA 5
#define enB 10
int M1_Speed = 50; // speed of motor 1
int M2_Speed = 50; // speed of motor 2
int LeftRotationSpeed = 110; // Left Rotation Speed
int RightRotationSpeed = 110; // Right Rotation Speed
void setup() {
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(enA,OUTPUT);
pinMode(enB,OUTPUT);
pinMode(A0, INPUT); // initialize Left sensor as an input
pinMode(A1, INPUT); // initialize Right sensor as an input
}
void loop() {
int LEFT_SENSOR = digitalRead(A0);
int RIGHT_SENSOR = digitalRead(A1);
if(RIGHT_SENSOR==0 && LEFT_SENSOR==0) {
forward(); //FORWARD
}
else if(RIGHT_SENSOR==0 && LEFT_SENSOR==1) {
right(); //Move Right
}
else if(RIGHT_SENSOR==1 && LEFT_SENSOR==0) {
left(); //Move Left
}
else if(RIGHT_SENSOR==1 && LEFT_SENSOR==1) {
Stop(); //STOP
}
}
void forward()
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, M1_Speed);
analogWrite(enB, M2_Speed);
}
void backward()
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, M1_Speed);
analogWrite(enB, M2_Speed);
}
void right()
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, LeftRotationSpeed);
analogWrite(enB, RightRotationSpeed);
}
void left()
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, LeftRotationSpeed);
analogWrite(enB, RightRotationSpeed);
}
void Stop()
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
Comments
Post a Comment