/*
Kelompok 5
(Sistem Parkir Otomatis)
* Alfan Almarogy
* Dede Ridwan
* Fadhil Muhammad
*/
/* Library */
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
/* Deklarasi Variable & Object */
// Alamat I2C untuk LCD
LiquidCrystal_I2C lcd(0x27,16,2);
// Object dari Class Servo
Servo motorServoMasuk;
Servo motorServoKeluar;
// Variable Lampu
const int pinMerah = 4;
const int pinHijau = 5;
// Variable Sensor Ultrasonik
const int echoPin = 13;
const int trigPin = 12;
// Variable Sensor Servo
const int servoPin = 3;
const int pinServoKeluar = 6;
// Variable Sensor Buzzer
const int buzzer = 8;
// Variable Sensor IR
const int IRSensor1 = 7;
// Variable iterasi dari Nilai mobil
int iterasi = 0;
int parkirTersedia = 10;
void setup() {
/* bagian LCD */
lcd.init();
lcd.begin(16, 2);
lcd.clear();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("PARKIR YANG");
lcd.setCursor(0,1);
lcd.print("TERSEDIA : ");
lcd.setCursor(11, 1);
lcd.print(parkirTersedia);
/* bagian Ultrasonik */
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
/* lampu LED */
pinMode(pinMerah, OUTPUT);
pinMode(pinHijau, OUTPUT);
/* bagian Servo */
motorServoMasuk.attach(servoPin);
motorServoMasuk.write(0);
motorServoKeluar.attach(pinServoKeluar);
motorServoKeluar.write(0);
/* bagian suara */
pinMode(buzzer, OUTPUT);
/* bagian Sensor IR */
pinMode(IRSensor1, INPUT);
/* bagian Serial begin */
Serial.begin(9600);
Serial.println("Serial Terhubung");
}
void loop() {
/* pemubatan variable */
double durasi, jarak;
int palangKeluar = digitalRead(IRSensor1);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
durasi = pulseIn(echoPin, HIGH);
jarak = (durasi / 2) / 29.1;
// mengaktifkan LED hijau
digitalWrite(pinHijau, HIGH);
/* pengkondisian */
if(jarak > 20 && jarak < 200) {
if (iterasi < 10) {
tone(buzzer, 500, 500);
iterasi++;
parkirTersedia--;
updateLCD();
openGate();
delay(3000);
}
}
if (palangKeluar == HIGH) {
Serial.println("ada yang keluar, buka palangnya");
tone(buzzer, 500, 500);
bukaPintuKeluar();
iterasi--;
parkirTersedia++;
updateLCD();
}
if (iterasi >= 10) {
digitalWrite(pinHijau, LOW);
digitalWrite(pinMerah, HIGH);
} else {
digitalWrite(pinMerah, LOW);
}
}
/* fungsi updateLCD */
void updateLCD() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PARKIR YANG");
lcd.setCursor(0,1);
lcd.print("TERSEDIA : ");
lcd.setCursor(11, 1);
lcd.print(parkirTersedia);
}
/* fungsi openGate() */
void openGate() {
motorServoMasuk.write(90);
delay(3000); // 3 detik
motorServoMasuk.write(0);
}
void bukaPintuKeluar() {
motorServoKeluar.write(90);
delay(3000); // 3 detik
motorServoKeluar.write(0);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
servo1:GND
servo1:V+
servo1:PWM
servo2:GND
servo2:V+
servo2:PWM
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
led1:A
led1:C
led2:A
led2:C
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
bz1:1
bz1:2
pir1:VCC
pir1:OUT
pir1:GND