1. Tujuan [kembali]
Membuat dan memahami prinsip kerja aplikasi kontrol robot dengan input 3 buah sensor ultrasonik dan output 2 motor DC serta LCD 16 x 4.
2. Alat dan Bahan [kembali]
- Arduino Mega 2560
- RES (Resistor 220 ohm)
- CAP (Capasitor 1nF)
- 3 Buah Ultrasonic Sensor (HC SR-04)
- 2 Buah Motor
- 4 Buah Potensiometer (POT-HG)
- L293D (Motor Driver)
- LCD 16x4 (LM041L)
- BUTTOM
- Jumper
- Power
- Ground
3. Landasan Teori [kembali]
a. Arduino
Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan pada prkatikum ini adalah arduino mega yang menggunakan chip AVR ATmega 2560 yang memiliki fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino bisa digabungkan bersama modul atau alat lain dengan protocol yang berbeda-beda. Bahasa pemograman yang digunakan adalah bahasa C. Tetapi bahasa ini sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga lebih mudah dalam memprogramnya. Dalam memprogram arduino, kita bisa menggunakan serial komunikasi agar arduino dapat berhubungan dengan komputer ataupun aplikasi lain.
gambar 1. Arduino Mega |
BAGIAN-BAGIAN DARI ARDUINO MEGA 2560
- Soket USB : Soket USB adalah soket untuk kabel USB yang disambungkan ke komputer atau laptop.Berfungsi untuk mengirimkan program ke Arduino dan juga sebagai port komunikasi serial.Input / Output Digital Input/Output Digital atau digital pin adalah pin-pin untuk menghubungkan Arduino dengan komponen atau rangkaian digital. Pada Arduino Mega terdapat 53 I/O Digital dimana 16 diantaranya dapat dijadikan sebagai output PWM
- Input Analog : Input Analog atau analog pin adalah pin-pin yang berfungsi untuk menerima sinyal dari komponen atau rangkaian analog. Misalnya dari potensiometer, sensor suhu, sensor cahaya, dsb.Terdapat 16 input analog pada arduino mega 2560.
- Pin POWER: Pin-pin catu daya adalah pin yang memberikan tegangan untuk komponen atau rangkaian yang dihubungkan dengan Arduino. Pada bagian catu daya ini terdapat juga pin Vin dan Reset.Vin digunakan untuk memberikan tegangan langsung kepada Arduino tanpa melalui tegangan USB atau adaptor.
- Tombol RESET : Reset adalah pin untuk memberikan sinyal reset melaui tombol atau rangkaian eksternal.
- Jack Baterai/Adaptor : Soket baterai atau adaptor digunakan untuk menyuplai Arduino dengan tegangan dari baterai/adaptor 9V pada saat Arduino sedang tidak disambungkan ke komputer. Kalau Arduino sedang disambungkan ke komputer melalui USB, Arduino mendapatkan suplai tegangan dari USB, jadi tidak perlu memasang baterai/adaptor saat memprogram Arduino.
Microcontroller
|
ATmega2560
|
Operating Voltage
|
5V
|
Input Voltage (recommended)
|
7-12V
|
Input Voltage (limits)
|
6-20V
|
Digital I/O Pins
|
54 (of which 15 provide PWM output)
|
Analog Input Pins
|
16
|
DC Current per I/O Pin
|
20 mA
|
DC Current for 3.3V Pin
|
50 mA
|
Flash Memory
|
256 KB of which 8 KB used by bootloader
|
SRAM
|
8 KB
|
EEPROM
|
4 KB
|
Clock Speed
|
16 MHz
|
Sensor ultrasonik adalah sebuah sensor yang berfungsi untuk mengubah besaran fisis (bunyi) menjadi besaran listrik dan sebaliknya. Cara kerja sensor ini didasarkan pada prinsip dari pantulan suatu gelombang suara sehingga dapat dipakai untuk menafsirkan eksistensi (jarak) suatu benda dengan frekuensi tertentu. Disebut sebagai sensor ultrasonik karena sensor ini menggunakan gelombang ultrasonik (bunyi ultrasonik). Gelombang ultrasonik adalah gelombang bunyi yang mempunyai frekuensi sangat tinggi yaitu 20.000 Hz. Bunyi ultrasonik tidak dapat di dengar oleh telinga manusia. Bunyi ultrasonik dapat didengar oleh anjing, kucing, kelelawar, dan lumba-lumba. Bunyi ultrasonik nisa merambat melalui zat padat, cair dan gas. Reflektivitas bunyi ultrasonik di permukaan zat padat hampir sama dengan reflektivitas bunyi ultrasonik di permukaan zat cair. Akan tetapi, gelombang bunyi ultrasonik akan diserap oleh tekstil dan busa.
gambar 3.b.1. prinsip kerja sensor ultrasonik |
Secara detail, cara kerja sensor ultrasonik adalah sebagai berikut: Sinyal dipancarkan oleh pemancar ultrasonik dengan frekuensi tertentu dan dengan durasi waktu tertentu. Sinyal tersebut berfrekuensi diatas 20kHz. Untuk mengukur jarak benda (sensor jarak), frekuensi yang umum digunakan adalah 40kHz. Sinyal yang dipancarkan akan merambat sebagai gelombang bunyi dengan kecepatan sekitar 340 m/s. Ketika menumbuk suatu benda, maka sinyal tersebut akan dipantulkan oleh benda tersebut. Setelah gelombang pantulan sampai di alat penerima, maka sinyal tersebut akan diproses untuk menghitung jarak benda tersebut. Jarak benda dihitung berdasarkan rumus : S = 340.t/2 dimana S merupakan jarak antara sensor ultrasonik dengan benda (bidang pantul), dan t adalah selisih antara waktu pemancaran gelombang oleh transmitter dan waktu ketika gelombang pantul diterima receiver.
Sensor Ultrasonik HC-SR04
Sensor ini merupakan sensor ultrasonik siap pakai, satu alat yang berfungsi sebagai pengirim, penerima, dan pengontrol gelombang ultrasonik. Alat ini bisa digunakan untuk mengukur jarak benda dari 2cm - 4m dengan akurasi 3mm. Alat ini memiliki 4 pin, pin Vcc, Gnd, Trigger, dan Echo. Pin Vcc untuk listrik positif dan Gnd untuk ground-nya. Pin Trigger untuk trigger keluarnya sinyal dari sensor dan pin Echo untuk menangkap sinyal pantul dari benda.
gambar 3.b.2.sensor ultrasonik hc-sr04 |
gambar 3.b.3.prinsip kerja sensor ultrasonik hc-sr04 |
Sensor ultrasonik PING terdiri dari tiga bagian utama yaitu :
- Transmitter Gelombang Ultrasonik
- Receiver Gelombang Ultrasonik
- Rangkaian kontrol
Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).
gambar 3.c.1 LCD |
Gambar 3.c.2. Penampang komponen penyusun LCD |
Keterangan:
1. Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.
2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).
5. Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.
6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat. Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.
Spesifikasi
Kaki LCD 16 x 4
Pin
Deskripsi
1
Ground
2
Vcc
3
Pengatur kontras
4
“RS” Instruction/Register Select
5
“R/W” Read/Write LCD Registers
6
“EN” Enable
7-14
Data I/O Pins
15
Vcc
16
Groundd. motor L298N Driver motor L298N
Merupakan module driver motor DC yang paling banyak digunakan atau dipakai di dunia elektronika yang difungsikan untuk mengontrol kecepatan serta arah perputaran motor DC. Bentuk fisik IC L298 & Modul Driver Motor L298N IC L298 merupakan sebuah IC tipe H-bridge yang mampu mengendalikan beban-beban induktif seperti relay, solenoid, motor DC dan motor stepper. Pada IC L298 terdiri dari transistor-transistor logik (TTL) dengan gerbang nand yang berfungsi untuk memudahkan dalam menentukan arah putaran suatu motor dc maupun motor stepper.
Bentuk fisik IC L298 & Modul Driver Motor L298N |
Untuk dipasaran sudah terdapat modul driver motor menggunakan ic l298 ini, sehingga lebih praktis dalam penggunaannya karena pin I/O nya sudah terpackage dengan rapi dan mudah digunakan. Kelebihan akan modul driver motor L298N ini yaitu dalam hal kepresisian dalam mengontrol motor sehingga motor lebih mudah untuk dikontrol. Pin out dari driver motor l298 Keterangan :
Enable A : berfungsi untuk mengaktifkan bagian output motor A
Enable B : berfungsi untuk mengaktifkan bagian output motor B
Jumper 5vdc : sebagai mode pemilihan sumber tegangan 5Vdc, jika tidak dijumper maka akan ke mode sumber tegangan 12 Vdc
Control Pin : Sebagai kendali perputaran dan kecepatan motor yang dihubungkan ke Mikrokontroler
Spesifikasi dari Modul Driver Motor L298N Menggunakan IC L298N (Double H bridge Drive Chip)
Tegangan minimal untuk masukan power antara 5V-35V
Tegangan operasional : 5V
Arus untuk masukan antara 0-36mA
Arus maksimal untuk keluaran per Output A maupun B yaitu 2A
Daya maksimal yaitu 25W
Dimensi modul yaitu 43 x 43 x 26mm
Berat : 26g
Prinsip kerja Driver Motor Secara konsep rangkaian ini terdiri dari 4 saklar yang tersusun sedemikian rupa sehingga memungkinkan motor dapat teraliri arus dengan arah yang berkebalikan. Yaitu searah jarum jam dan berlawanan arah jarum jam. Pada rangkaian driver motor ini, saklar-saklar tersebut digantikan oleh transistor atau MOSFET yang dikerjakan pada daerah saturasi dan cut-off (Switch). Ketika S1 dan S4 tertutup (diagonal) dan lainnya terbuka maka arus akan mengalur dari batery ke kutub positif motor kemudian keluar ke kutub negatif motor,makamotor akan berputar kearah kanan. Ketika S2 dan S3 tertutup (diagonal) dan lainnya terbuka,maka arus akan mengalir sebaliknya,motor juga akan berputar kearah sebaliknya. Jika semua saklar tertutup, maka motor akan berhenti. Gambar analogi siklus kerja driver motor
4. Rangkaian [kembali]
rangkaian |
Pada rangkaian kontrol robot terdapat sensor ultrasonik sebagai input dan LCD serta Motor sebagai output. input akan diproses oleh program yang ada pada arduino.
Pada sensor ultrasonik pin trigger terhubung pada output, sedangkan pin echo dihubungkan pada input. pada test pin dihubungkan pada potensiometer sebagai pemisalan jarak dari sensor ultrasonik terhadap dinding.
Selanjutnya sensor akan mengirimkan 8 step sinyal ultrasonik dengan frekuensi 40kHz. Lalu, sinyal pantulan akan diterima oleh pin Echo yang diberi pulse. Lama penerimaan sinyal-sinyal yang diterima pin echo akan menentukan jarak ke halangan.
Sensor ultrasonic 1 akan mendeteksi halangan pada bagian depan robot.
Sensor ultrasonic 2 akan mendeteksi halangan pada bagian kanan robot.
Sensor ultrasonic 3 akan mendeteksi halangan pada bagian kiri robot.
Data dari sinyal-sinyal tadi akan berlogika 1 jika ada halangan kurang dari 20cm. Data dari sinyal sensor ultrasonic akan memicu Arduino untuk memberikan output logika 1 kepada driver motor dan juga akan memberikan output kepada LCD berupa tulisan arah pergerakan robot sesuai dengan kondisi yang terpenuhi pada program.
Pin pada driver motor akan disesuaikan dengan motor dc
pin in1 pada driver motor akan menggerakkan roda kanan maju
pin in2 pada driver motor akan menggerakkan roda kanan mundur
pin in3 pada driver motor akan menggerakkan roda kiri maju
pin in4 pada driver motor akan menggerakkan roda kiri mundur
· Saat sensor ultrasonic 1 (kanan) berlogika 1, maka arduino akan memberikan: Logika 1 ke pin in1.
Logika 0 ke pin in2
Logika 0 ke pin in3
Logika 0 ke pin in4
Sehingga robot akan berbelok ke kiri
· Saat sensor ultrasonic 2 (depan) berlogika 1, maka arduino akan memberikan Logika 0 ke pin in1.
Logika 1 ke pin in2
Logika 0 ke pin in3
Logika 1 ke pin in4
Sehingga robot akan mundur
· Saat sensor ultrasonic 3 (kiri) berlogika 1, maka arduino akan memberikan Logika 0 ke pin in1.
Logika 0 ke pin in2
Logika 1 ke pin in3
Logika 0 ke pin in4
Sehingga robot akan berbelok ke kanan
· Saat sensor ultrasonic 1, ultrasonic 2, ultrasonic 3 berlogika 1, maka arduino akan memberikan Logika 0 ke pin in1.
Logika 1 ke pin in2
Logika 0 ke pin in3
Logika 1 ke pin in4
Sehingga robot akan mundur
· Saat sensor ultrasonic 1, ultrasonic 3, ultrasonic 3 berlogika 0, maka arduino akan memberikan Logika 1 ke pin in1.
Logika 0 ke pin in2
Logika 1 ke pin in3
Logika 0 ke pin in4
Sehingga robot akan maju
Berikut merupakan listing program dari aplikasi kontrol robot :
#include <LiquidCrystal.h> //pemanggilan library LCD
6. Flowchart
[kembal] #include <LiquidCrystal.h> //pemanggilan library LCD
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
//penetapan pin-pin LCD yang akan dihubungkan ke arduino
const int echoPin1 = 13; //pendeklarasian pin
Echo Ultrasonic 1 terhubung ke pin 13 arduino
const int trigPin1 = 12; //pendeklarasian pin
Trigger Ultrasonic 1 terhubung ke pin 12 arduino
const int echoPin2 = 11; //pendeklarasian pin
Echo Ultrasonic 2 terhubung ke pin 11 arduino
const int trigPin2 = 10; //pendeklarasian pin
Trigger Ultrasonic 2 terhubung ke pin 10 arduino
const int echoPin3 = 9; //pendeklarasian pin Echo
Ultrasonic 3 terhubung ke pin 9 arduino
const int trigPin3 = 8; //pendeklarasian pin Trigger
Ultrasonic 3 terhubung ke pin 8 arduino
//pendeklarasian variable yang akan digunakan
didalam program
long duration1; //variabel duration1 untuk hasil pembacaan jarak dari sensor ultrasonic 1
int distance1; //varibel distance1 untuk hasil kalibrasi jarak pembacaan sensor ultrasonic 1 ke dalam satuan cm (centimeter)
long duration2; //variabel duration2 untuk hasil pembacaan jarak dari sensor ultrasonic 2
int distance2; //varibel distance2 untuk hasil kalibrasi jarak pembacaan sensor ultrasonic 2 ke dalam satuan cm (centimeter)
long duration3; //variabel duration3 untuk hasil pembacaan jarak dari sensor ultrasonic 3
int distance3; //varibel distance3 untuk hasil kalibrasi jarak pembacaan sensor ultrasonic 3 ke dalam satuan cm (centimeter)
//pendeklarasian pin driver motor ke arduino
int kananA = A1; //pin 1 pada driver motor
int kananB = A2; //pin 2 pada driver motor
int kiriA = A3; //pin 3 pada driver motor
int kiriB = A4; //pin 4 pada driver motor
void setup()
{
{
lcd.begin (16, 4); //untuk mengenalkan lcd yang dipakai berdimensi 16x4
lcd.setCursor(0,0); //mengatur letak kursor awal di lcd
lcd.print ("Good Luck"); //menampilkan tulisan di lcd
delay(1000); //delay tampilan tulisan selama 1 detik
lcd.clear(); //mengatur lcd kosong kembali
//pengaturan tipe pin (I/O) untuk driver
motor
pinMode(kiriA, OUTPUT); //pin kiriA sebagai OUTPUT
pinMode(kiriB, OUTPUT); //pin kiriB sebagai OUTPUT
pinMode(kananA, OUTPUT); //pin kananA sebagai OUTPUT
pinMode(kananB, OUTPUT); //pin kananB sebagai OUTPUT
pinMode(trigPin1, OUTPUT); // setting pin ttrigPin1 sebagai Output
pinMode(trigPin2, OUTPUT); // setting pin ttrigPin2 sebagai Output
pinMode(trigPin3, OUTPUT); // setting pin ttrigPin3 sebagai Output
pinMode(echoPin1, INPUT); // setting pin echoPin1 sebagai Input
pinMode(echoPin2, INPUT); // setting pin echoPin1 sebagai Input
pinMode(echoPin3, INPUT); // setting pin echoPin1 sebagai Input
Serial.begin(9600); // perintah memulai komunikasi serial
}
void loop()
{
{
//
pembacaan data pada ultrasonic 1
digitalWrite(trigPin1, LOW); //menetapkan nilai digital pin triger ultrasonic 1 sebagai LOW
delayMicroseconds(4); //delay untuk nilai digital
digitalWrite(trigPin1, HIGH); ////menetapkan nilai digital pin triger ultrasonic 1 sebagai HIGH
delayMicroseconds(10); //delay untuk nilai digital
digitalWrite(trigPin1, LOW); //menetapkan nilai digital pin triger ultrasonic 1 sebagai LOW
duration1 = pulseIn(echoPin1, HIGH); //pemberian nilai digital HIGH
untuk pin echo1 agar bisa dilakukan pembacaan data oleh pin echo
// pembacaan data pada ultrasonic 2
digitalWrite(trigPin2, LOW); //menetapkan nilai digital pin triger ultrasonic 2 sebagai LOW
delayMicroseconds(4); //delay untuk nilai digital
digitalWrite(trigPin2, HIGH); //menetapkan nilai digital pin triger ultrasonic 2 sebagai HIGH
delayMicroseconds(10); //delay untuk nilai digital
digitalWrite(trigPin2, LOW); //menetapkan nilai digital pin triger ultrasonic 2 sebagai LOW
duration1 = pulseIn(echoPin2, HIGH); //pemberian nilai digital HIGH
untuk pin echo2 agar bisa dilakukan pembacaan data oleh pin echo3
// pembacaan data pada ultrasonic 3
digitalWrite(trigPin3, LOW); //menetapkan nilai digital pin triger ultrasonic 3 sebagai LOW
delayMicroseconds(4); //delay untuk nilai digital
digitalWrite(trigPin3, HIGH); ////menetapkan nilai digital pin triger ultrasonic 3 sebagai HIGH
delayMicroseconds(10); //delay untuk nilai digital
digitalWrite(trigPin3, LOW); //menetapkan nilai digital pin triger ultrasonic 3 sebagai LOW
duration1 = pulseIn(echoPin3, HIGH); //pemberian nilai digital HIGH
untuk pin echo3 agar bisa dilakukan pembacaan data oleh pin echo3
distance1= duration1/58.2; //kalibrasi sensor ultrasonic 1 ke dalam
satuan Centi Meter
distance2= duration2/58.2; //kalibrasi sensor ultrasonic 2 ke dalam
satuan Centi Meter
distance3= duration3/58.2; //kalibrasi sensor ultrasonic 3 ke dalam
satuan Centi Meter
//pemberian perintah kepada driver motor
sesuai dengan kondisi yang dihasilkan dari hasil kalibrasi sensor ultrasonic 1,
ultrasonic 2, ultrasonic 3
if(distance2 <= 20) //kondisi jika nilai distance2 kurang dari 20 cm(ultrasonic 2) untuk bagian depan
{
if
(distance3 <= 20) //kondisi jika nilai distance3 kurang dari 20 cm(ultrasonic 3) untuk bagian kiri
{
if(distance1 <= 20) //kondisi jika nilai distance1 kurang dari 20 cm(ultrasonic 1) untuk bagian kanan
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0); //pengaturan letak kursor
lcd.print("Jalan Terhalang"); //menampilkan tulisan
lcd.setCursor(1,1); //pengaturan letak kursor
lcd.print("MUNDUR !!!"); //menampilkan tulisan
analogWrite(kiriA, 0); //menetapkan nilai analog
analogWrite(kiriB, 255); //menetapkan nilai analog
analogWrite(kananA, 0); //menetapkan nilai analog
analogWrite(kananB, 255); //menetapkan nilai analog
}
else //kondisi jika nilai distance1 lebih dari 20 cm (ultrasonic 1) untuk bagian kanan
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Belok Kanan");//menampilkan tulisan
analogWrite(kiriA, 255); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 0); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog
}
}
else //kondisi jika nilai distance3 lebih dari 20 cm (ultrasonic 1) untuk bagian kiri
{
if(distance1 <= 20) //kondisi jika nilai distance3 kurang dari 20 cm (ultrasonic 1) untuk bagian kanan
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Belok Kiri");//menampilkan tulisan
analogWrite(kiriA, 0); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 255); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog
}
else //kondisi jika nilai distance1 lebih dari 20 cm (ultrasonic 1) untuk bagian kanan
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Belok Kanan ");//menampilkan tulisan
analogWrite(kiriA, 255); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 0); //menetapkan nilai analog
analogWrite(kananB, 255); //menetapkan nilai analog
}
}
}
else //kondisi jika nilai distance2 lebih dari 20 cm (ultrasonic 3) untuk bagian kiri
{
if
(distance3 <= 20) //kondisi jika nilai distance3 kurang dari 20 cm (ultrasonic 1) untuk bagian kiri
{
if(distance1 <= 20) //kondisi jika nilai distance1 kurang dari 20 cm (ultrasonic 1) untuk bagian kanan
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0); //pengaturan letak kursor
lcd.print("Jalan Terhalang"); //menampilkan tulisan
lcd.setCursor(1,1); //pengaturan letak kursor
lcd.print("MUNDUR !!!"); //menampilkan tulisan
analogWrite(kiriA, 0); //menetapkan nilai analog
analogWrite(kiriB, 255); //menetapkan nilai analog
analogWrite(kananA, 0); //menetapkan nilai analog
analogWrite(kananB, 255); //menetapkan nilai analog
if(distance3 >= 20) //kondisi jika nilai distance1 lebih dari 20 cm (ultrasonic 1) untuk bagian kiri
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Belok Kiri");//menampilkan tulisan
analogWrite(kiriA, 0); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 255); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog
}
}
else //kondisi jika nilai distance1 lebih dari 20 cm (ultrasonic 1) untuk bagian kiri
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Belok Kanan");//menampilkan tulisan
analogWrite(kiriA, 255); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 0); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog
}
}
else //kondisi jika nilai distance3 lebih dari 20 cm (ultrasonic 1) untuk bagian kiri
{
if(distance3 <= 20) //kondisi jika nilai distance1 kurang dari 20 cm (ultrasonic 3) untuk bagian kiri
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Belok Kiri");//menampilkan tulisan
analogWrite(kiriA, 0); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 255); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog
if(distance1 >= 20) //kondisi jika nilai distance1 lebih dari 20 cm (ultrasonic 1) untuk bagian kanan
{
lcd.clear(); //perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Jalur Aman");//menampilkan tulisan
analogWrite(kiriA, 255); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 255); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog
}
}
else //kondisi jika nilai distance1 lebih dari 20 cm (ultrasonic 1) untuk bagian kanan
{
lcd.clear();//perintah pembersihan lcd
lcd.setCursor(1,0);//pengaturan letak kursor
lcd.print("Jalur Aman");//menampilkan tulisan
analogWrite(kiriA, 255); //menetapkan nilai analog
analogWrite(kiriB, 0); //menetapkan nilai analog
analogWrite(kananA, 255); //menetapkan nilai analog
analogWrite(kananB, 0); //menetapkan nilai analog }
}
}
}
flowchart |
7. link Download [kembali]
klik dibawah ini untuk mendownload
download rangkaian
download program arduino
Tidak ada komentar:
Posting Komentar