Robot Line Follower
1. Rakit Sasis Mobil Pintar 2WD 2 Roda
2. Hubungkan sensor IR ke Modul Analog ke Digital dan Komparator
IN1 > Sensor IR 1
IN2 > Sensor IR 2
IN3 > Sensor IR 3
IN4 > Sensor IR 4
3. Kemudian sambungkan pin output ke pin analog Arduino UNO
KELUAR1 > A2
KELUAR2 > A3
KELUAR3 > A4
KELUAR4 > A5
4. Hubungkan Vin ke 5V dan GND ke GND di Arduino UNO
5. Kemudian sambungkan pin driver motor ke pin Arduino UNO
DALAM1 > D10
DALAM2 > D9
DALAM3 > D6
DALAM4 > D5
6. Hubungkan kedua motor ke driver motor
Motor A > Motor kanan
Motor B > Motor kiri
Setelah koneksi selesai, sambungkan Arduino ke catu daya dengan kabel USB.
.
Langkah 3: Masukkan Kode Sumber
.
1. Download kode tes dan buka dengan menggunakan software Arduino atau IDE.
2. Pastikan Anda telah memilih papan yang tepat dan port yang sesuai. (Dalam tutorial ini, Arduino Uno digunakan)
3. Kemudian upload kode tes ke Arduino Uno Anda.
.
Kode Test
#define SEN_1_PIN A2
#define SEN_2_PIN A3
#define SEN_3_PIN A4
#define SEN_4_PIN A5
#define IN1 10
#define IN2 9
#define IN3 6
#define IN4 5
#define MOT_RIGHT 0
#define MOT_LEFT 1
void setup()
{
pinMode(SEN_1_PIN, INPUT);
pinMode(SEN_2_PIN, INPUT);
pinMode(SEN_3_PIN, INPUT);
pinMode(SEN_4_PIN, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
}
void loop()
{
char cSen_Status = 0b00000000;
cSen_Status = cRead_Sensor();
if((cSen_Status == 0b00000110) || (cSen_Status == 0b00000111) || (cSen_Status == 0b00001110)) //Forward
{
vMotor_Control(MOT_RIGHT, 80);
vMotor_Control(MOT_LEFT, 80);
}
else if((cSen_Status == 0b00000010) || (cSen_Status == 0b00000011) || (cSen_Status == 0b00000001))
{
vMotor_Control(MOT_RIGHT, 0);
vMotor_Control(MOT_LEFT, 80);
}
else if((cSen_Status == 0b00000100) || (cSen_Status == 0b00001100) || (cSen_Status == 0b00001000))
{
vMotor_Control(MOT_RIGHT, 80);
vMotor_Control(MOT_LEFT, 0);
}
else
{
vMotor_Control(MOT_RIGHT, 0);
vMotor_Control(MOT_LEFT, 0);
}
Serial.println((short)cSen_Status);
}
char cRead_Sensor(void) //stop
{
short sSen_Pin[4] = {SEN_1_PIN, SEN_2_PIN, SEN_3_PIN, SEN_4_PIN};
char cStatus = 0b00000000;
for(short i=0; i<4; i++)
{
cStatus = cStatus | (digitalRead(sSen_Pin[i]) << i);
}
return cStatus;
}
void vMotor_Control(short sWhich_Mot, short sSpeed)
{
if(sWhich_Mot == MOT_RIGHT)
{
if(sSpeed < 0) //reverse
{
sSpeed = abs(sSpeed);
analogWrite(IN1, sSpeed);
digitalWrite(IN2, LOW);
}
else
{
digitalWrite(IN1, LOW);
analogWrite(IN2, sSpeed);
}
}
else
{
if(sSpeed < 0) //reverse
{
sSpeed = abs(sSpeed);
analogWrite(IN3, sSpeed);
digitalWrite(IN4, LOW);
}
else
{
digitalWrite(IN3, LOW);
analogWrite(IN4, sSpeed);
}
}
}

Komentar
Posting Komentar