💻 Kode Program Arduino
/*========================================= SMART PARKING SYSTEM MTs Negeri 8 Tangerang=========================================
Komponen:- Arduino UNO- 2 Sensor IR- Servo SG90- LCD I2C 16x2
IR Masuk : D2IR Keluar : D3Servo : D9
=========================================*/
#include <Wire.h>#include <LiquidCrystal_I2C.h>#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,16,2);Servo portal;
//------------------------------// PIN//------------------------------const int irMasuk = 2;const int irKeluar = 3;const int servoPin = 9;
//------------------------------// VARIABEL//------------------------------int jumlahMobil = 0;const int kapasitasMaks = 5;
//Status sensor sebelumnyabool statusMasukSebelumnya = HIGH;bool statusKeluarSebelumnya = HIGH;
void setup(){ pinMode(irMasuk, INPUT); pinMode(irKeluar, INPUT);
portal.attach(servoPin); portal.write(0);
lcd.init(); lcd.backlight();
Serial.begin(9600);
tampilLCD();}
void loop(){
bool sensorMasuk = digitalRead(irMasuk); bool sensorKeluar = digitalRead(irKeluar);
//---------------------------- // MOBIL MASUK //---------------------------- if(statusMasukSebelumnya==HIGH && sensorMasuk==LOW) {
if(jumlahMobil < kapasitasMaks) {
bukaPortal();
jumlahMobil++;
Serial.print("Mobil Masuk : "); Serial.println(jumlahMobil);
} else {
lcd.clear(); lcd.setCursor(0,0); lcd.print("PARKIR PENUH");
lcd.setCursor(0,1); lcd.print("Silakan Tunggu");
Serial.println("Parkir Penuh");
delay(2000);
}
tampilLCD();
}
//---------------------------- // MOBIL KELUAR //---------------------------- if(statusKeluarSebelumnya==HIGH && sensorKeluar==LOW) {
if(jumlahMobil>0) {
bukaPortal();
jumlahMobil--;
Serial.print("Mobil Keluar : "); Serial.println(jumlahMobil);
}
tampilLCD();
}
statusMasukSebelumnya = sensorMasuk; statusKeluarSebelumnya = sensorKeluar;
}
//======================================// FUNGSI MEMBUKA PORTAL//======================================
void bukaPortal(){
portal.write(90);
delay(3000);
portal.write(0);
}
//======================================// TAMPIL LCD//======================================
void tampilLCD(){
lcd.clear();
lcd.setCursor(0,0); lcd.print("SMART PARKING");
lcd.setCursor(0,1);
if(jumlahMobil>=kapasitasMaks) {
lcd.print("FULL "); lcd.print(jumlahMobil); lcd.print("/"); lcd.print(kapasitasMaks);
} else {
int sisa = kapasitasMaks-jumlahMobil;
lcd.print("Sisa:"); lcd.print(sisa); lcd.print("/"); lcd.print(kapasitasMaks);
}
}📖 Penjelasan Program
Berikut penjelasan dari code berikut.
1️⃣ Menentukan Library
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Library digunakan agar Arduino dapat berkomunikasi dengan LCD I2C dan mengendalikan motor servo.
2️⃣ Menentukan Pin
const int irMasuk = 2;
const int irKeluar = 3;
const int servoPin = 9;
Bagian ini menentukan pin yang digunakan setiap komponen.
3️⃣ Variabel Counter
int jumlahMobil = 0;
Variabel ini berfungsi menghitung jumlah mobil yang sedang berada di area parkir.
4️⃣ Kapasitas Maksimum
const int kapasitasMaks = 5;
Nilai ini dapat diubah sesuai kebutuhan.
Misalnya
10
20
30
50
5️⃣ Fungsi Membuka Portal
bukaPortal();
Daripada menulis
portal.write(90);
delay(3000);
portal.write(0);
berulang kali,
lebih baik dibuat menjadi sebuah fungsi.
Ini merupakan contoh penerapan modular programming.
6️⃣ Fungsi LCD
tampilLCD();
Setiap kali jumlah mobil berubah,
LCD akan otomatis diperbarui.
7️⃣ Logika Counter
Jika
Sensor Masuk aktif
jumlahMobil++
Jika
Sensor Keluar aktif
jumlahMobil--
Konsep ini dinamakan Counter.
Counter adalah salah satu teknik pemrograman yang paling banyak digunakan dalam sistem otomatis.
0 Komentar