Anda di halaman 1dari 4

/* Program Arduino Robot Line Follower Menggunakan 3 Sensor

Universitas Mercu Buana Jakarta


Fakultas Teknik Jurusan Teknik Elektro
======================================
Mata kuliah : Mekatronika
Dosen
: Agung Yoke Basuki, ST. MT.
Dibuat oleh : Santoso
NIM
: 41412320020
*/
int
int
int
int
int
int
int
int
int
int
int

leftInput=A2;
centerInput=A3;
rightInput=A4;
dir1=4;
pwm1=5;
pwm2=6;
dir2=7;
leftValue = 0;
centerValue = 0;
rightValue = 0;
i;

void setup()
{
pinMode (leftInput, INPUT);
pinMode (centerInput, INPUT);
pinMode (rightInput, INPUT);
pinMode (dir1, OUTPUT);
pinMode (pwm1, OUTPUT);
pinMode (dir2, OUTPUT);
pinMode (pwm2, OUTPUT);
}

//
//
//
//
//
//
//
//
//
//
//

pin input sensor kiri


pin input sensor tengah
pin input sensor kanan
pin output arah putaran motor kiri
pin output pwm motor kiri
pin output pwm motor kanan
pin output arah putaran motor kanan
pernyataan variabel sensor kiri
pernyataan variabel sensor tengah
pernyataan variabel sensor kanan
pernyataan variabel i

//
//
//
//
//
//
//

pernyataan
pernyataan
pernyataan
pernyataan
pernyataan
pernyataan
pernyataan

pin
pin
pin
pin
pin
pin
pin

A2 sebagai input
A3 sebagai input
A4 sebagai input
4 sebagai output
5 sebagai output
6 sebagai output
7 sebagai output

// Menggunakan if..else.. untuk membandingkan nilai leftInput, centerInput dan


rightInput untuk selanjutnya menggerakkan motor
// Sensor infrared yang digunakan dalam kondisi aktif tegangan maksimalnya terbaca 4,
6V. Dalam program ini diberikan toleransi minimum 4,0V sudah aktif.
// Sensor aktif bila mengenai permukaan terang (receiver menangkap pantulan) dan
tidak aktif bila mengenai permukaan gelap (receiver kurang menangkap pantulan)

void loop()
{
leftValue = analogRead (leftInput);

// membaca tegangan di pin

A2 dan menyimpan hasilnya sebagai leftInput


centerValue = analogRead (centerInput);
A3 dan menyimpan hasilnya sebagai centerInput
rightValue= analogRead (rightInput);
A4 dan menyimpan hasilnya sebagai rightInput

// membaca tegangan di pin


// membaca tegangan di pin

if
( leftValue > 400 && centerValue < 400 && rightValue > 400)
sensor kiri on, sensor tengah off, sensor kanan on
{for (i=0; i<225; i+=1)
{
digitalWrite (dir1,LOW);
analogWrite (pwm1, i);
motor kiri berputar maksimal 100%
digitalWrite (dir2,LOW);
analogWrite (pwm2, i);
motor kanan berputar maksimal 100%, robot bergerak lurus
}
}
else
{
if
( leftValue > 400 && centerValue > 400 && rightValue < 400)
sensor kiri on, sensor tengah on, sensor kanan off
{for (i=0; i<160; i+=1)
{
digitalWrite (dir1,LOW);
analogWrite (pwm1, i);
motor kiri berputar maksimal sekitar 60%
digitalWrite (dir2,LOW);
analogWrite (pwm2, 0);
motor kanan off, robot bergerak ke kanan
}
}
else
{
if
(leftValue > 400 && centerValue < 400 && rightValue < 400)
sensor kiri on, sensor tengah off, sensor kanan off
{for (i=0; i<160; i+=1)
{
digitalWrite (dir1,LOW);
analogWrite (pwm1, i);
motor kiri berputar maksimal sekitar 60%

//

//

//

//

//

//

//

//

digitalWrite (dir2,LOW);
analogWrite (pwm2, 0);
motor kanan off, robot bergerak ke kanan
}
}
else
{
if
(leftValue < 400 && centerValue > 400 && rightValue > 400)
sensor kiri off, sensor tengah on, sensor kanan on
{for (i=0; i<160; i+=1)
{
digitalWrite (dir1,LOW);
analogWrite (pwm1, 0);
motor kiri off
digitalWrite (dir2,LOW);
analogWrite (pwm2, i);
motor kanan berputar maksimal sekitar 60%, robot bergerak ke kiri
}
}
else
{
if
(leftValue < 400 && centerValue < 400 && rightValue > 400)
sensor kiri off, sensor tengah off, sensor kanan on
{for (i=0; i<160; i+=1)
{
digitalWrite (dir1,LOW);
analogWrite (pwm1, 0);
motor kiri off
digitalWrite (dir2,LOW);
analogWrite (pwm2, i);
motor kanan berputar maksimal sekitar 60%, robot bergerak ke kiri
}
}
else
{
if
(leftValue > 400 && centerValue > 400 && rightValue > 400)
// sensor kiri on, sensor tengah on, sensor kanan on
{for (i=0; i<255; i+=1)
{
digitalWrite (dir1,LOW);

//

//

//

//

//

//

//

analogWrite (pwm1, 0);


// motor kiri off
digitalWrite (dir2,LOW);
analogWrite (pwm2, 0);
// motor kanan off, robot berhenti
}
}
else
{
if
(leftValue < 400 && centerValue < 400 && rightValue < 400)
// sensor kiri off, sensor tengah off, sensor kanan off
{for (i=0; i<255; i+=1)
{
digitalWrite (dir1,LOW);
analogWrite (pwm1, 0);
// motor kiri off
digitalWrite (dir2,LOW);
analogWrite (pwm2, 0);
// motor kanan off, robot berhenti
}
}
}
}
}
}
}
}
}