207002516020
TUGAS SISTEM EMBEDDED
1. PRINSIP KERJA
mendektesi adanya benda atau halangan yang berada di depan robot. Robot akan
mendektesi objek jika robot terhalang, robot ini akan terus berjalan jika tidak ada objek
atau halangan, dan jika robot terhalang maka robot akan berbelok ke arah dimana robot
tidak terdektesi objek atau halangan.Yang di gunakan robot avoider adalah robot
memakai sensor ultrasonic HC-SR04 yang berfungsi untuk mendektesi objek atau jarak,
ultrasonic akan bekerja ketika sensor mendektesi objek maka Sensor ultrasonik
pendektesi jarak objek dengan cara memancarkan gelombang ultrasonik (40 KHz) selama
(200 us) kemudian mendektesi pantulannya. Sensor HC-SR04 memancarkan gelombang
ultrasonik sesuai dengan kontrol dari mikrokontroler pengendali
Batterry 12v
ARDUINO UNO
Arduino Uno adalah salah satu produk berlabel arduino yang sebenarnya adalah suatu
papan elektronik yang mengandung mikrokontroler Atmega328P, yang memiliki 14 pin
I/O digital dan 6 pin input analog dan bersifat open Pada rangkaian Robot Avoider ini pin
keluaran arduino yang digunakan adalah pin Analog Output dan Digital Output. Pin AO2
dan AO3 akan dihubungkan ke kaki pin sensor HC-SR 04, pin DO9 dihubungkan ke kaki
pin motor servo, dan pin A1 ke kaki positif buzzer, sedangkan sensor infrared
dihubungkan ke pin A0, pin A5 dihubungkan ke port SCL modul I2C, Pin A4
dihubungkan ke port SDA modul I2C.
SENSOR HC-SR04
Sensor ultrasonik berfungsi sebagai mengukur jarak antara penghalang dan sensor.
Secara umum, alat ini akan menembakkan gelombang ultrasonik menuju suatu area atau
suatu target. Setelah gelombang menyentuh permukaan target, maka target akan
memantulkan kembali gelombang tersebut. Gelombang pantulan dari target akan
ditangkap oleh sensor, kemudian sensor menghitung selisih antara waktu pengiriman
gelombang dan waktu gelombang pantul diterima.
BUZZER
Buzzer adalah komponen elektronika yang berfungsi mengeluarkan suara, prinsip kerja
buzzer yaitu merubah listrik menjadi getaran suara. Buzzer biasa digunakan sebagai
indikator (alarm) bahwa proses sedang bekerja atau proses sudah selesai pada sebuah
alat.
LCD
LCD berfungsi untuk menampilkan suatu nilai hasil sensor, menampilkan text, atau
menampilkan menu pada aplikasi mikrokontroler.
MOTOR DRIVER
mengubah energi listrik yang didapatkan dari sumber utama, menjadi energi gerak yang
digunakan
DIAGRAM BLOK
FLOWCHART
CODING SOFTWARE ARDUINO
#include <UltraDistSensor.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
RightMotorForward = 9; const
int RightMotorBackward = 8;
UltraDistSensor mysensor;
float reading;
lcd.backlight();
// Motor driver
pinMode(RightMotorForward, OUTPUT);
pinMode(LeftMotorForward, OUTPUT);
pinMode(LeftMotorBackward, OUTPUT);
pinMode(RightMotorBackward,
OUTPUT);
void loop() { //
0; delay(50);
moveStop();
delay(200);
moveBackward();
delay(300);
moveStop();
delay(200);
moveForward();
delay(300);
if (reading >=
distanceLeft){
turnRight();
moveStop();
}
else{
turnLeft();
moveStop();
}
}
// buzzer if
tone(buzzer,
1000);
}
else{
noTone(buzzer);
}
// LCD I2C
Serial.print("Distance: ");
Serial.println(reading);
reading=mysensor.distanceInC
m(); lcd.setCursor(0,0);
lcd.print("Distance :- ");
lcd.print(reading); delay(50);
}
// motor driver void moveStop(){
digitalWrite(RightMotorForward,
LOW);
digitalWrite(LeftMotorForward,
LOW);
digitalWrite(RightMotorBackward,
LOW);
digitalWrite(LeftMotorBackward,
LOW);
}
void moveForward(){
if(!goesForward){
goesForward=true;
digitalWrite(LeftMotorForward,
HIGH);
digitalWrite(RightMotorForward,
HIGH);
digitalWrite(LeftMotorBackward,
LOW);
digitalWrite(RightMotorBackward,
LOW); }
}
void moveBackward(){
goesForward=false;
digitalWrite(LeftMotorBackward,
HIGH);
digitalWrite(RightMotorBackward,
HIGH);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(RightMotorForward, LOW);
}
void turnRight(){
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(RightMotorBackward,
HIGH);
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(RightMotorForward, LOW);
delay(200);
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(RightMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(RightMotorBackward,
LOW);
}
void turnLeft(){
digitalWrite(LeftMotorBackward, HIGH);
digitalWrite(RightMotorForward, HIGH);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(RightMotorBackward,
LOW);
delay(200);
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(RightMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(RightMotorBackward,
LOW);