Script Code #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Servo.h> // Inisialisasi LCD 16x2 dengan alamat I2C 0x27 LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi sensor ultrasonik const int trigPin = 9; const int echoPin = 10; // Inisialisasi servo Servo servoMotor; const int servoPin = 6; // Variabel untuk menyimpan jarak yang terdeteksi long duration; int distance; void setup() { // Inisialisasi pin pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // Inisialisasi servo servoMotor.attach(servoPin); servoMotor.write(0); // Servo pada posisi awal (tertutup) // Inisialisasi LCD lcd.init(); lcd.backlight(); // Menampilkan pesan awal di LCD lcd.setCursor(0, 0); lcd.print("Tong sampah Pintar"); lcd.setCursor(0, 1); lcd.print("Shiappp"); delay(2000); lcd.clear(); } void loop() { // Mengirim sinyal trigger digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Membaca sinyal echo duration = pulseIn(echoPin, HIGH); // Menghitung jarak (dalam cm) distance = duration * 0.034 / 2; // Menampilkan jarak di LCD lcd.setCursor(0, 0); lcd.print("Jarak : "); lcd.print(distance); lcd.print(" cm "); // Logika membuka tutup tong sampah if (distance <= 15) { // Jika objek dalam jarak 15 cm lcd.setCursor(0, 1); lcd.print("Buka Tong sampah... "); // Membuka tutup dengan menggerakkan servo servoMotor.write(170); // Servo bergerak ke 90 derajat (tutup terbuka) delay(5000); // Tunggu 3 detik lcd.clear(); servoMotor.write(0); // Tutup kembali lcd.setCursor(0, 1); lcd.print("Menutup "); } else { lcd.setCursor(0, 1); lcd.print("Menutup "); } delay(500); // Jeda sebelum pengecekan jarak selanjutnya }
Skema Koneksi:
Sensor Ultrasonik (HC-SR04):
- VCC → 5V Arduino
- GND → GND Arduino
- TRIG → Pin 9 Arduino
- ECHO → Pin 10 Arduino
Servo Motor:
- VCC → 5V Arduino
- GND → GND Arduino
- Signal → Pin 6 Arduino
LCD (I2C):
- SDA → Pin A4 Arduino
- SCL → Pin A5 Arduino
- VCC → 5V Arduino
- GND → GND Arduino