#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>
#include <Servo.h>
const int stepsPerRevolution = 200; // Jumlah langkah per revolusi motor stepper
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // Pin motor stepper dihubungkan ke pin 8, 9, 10, dan 11
Servo myservo; // Membuat objek servo
LiquidCrystal_I2C lcd(0x27, 16, 2); // Gunakan alamat 0x27 untuk modul LCD I2C dengan 16 kolom dan 2 baris
// Definisi pin untuk tombol
const int buttonPinOn = 2; // Pin untuk tombol mengaktifkan sistem
const int buttonPinOff = 3; // Pin untuk tombol mematikan sistem
bool systemActive = false; // Status sistem aktif atau tidak
void setup() {
// Inisialisasi motor stepper
myStepper.setSpeed(100); // Atur kecepatan motor stepper (sesuaikan dengan kebutuhan Anda)
// Inisialisasi servo
myservo.attach(12); // Pin servo dihubungkan ke pin 12 (atau sesuaikan dengan koneksi Anda)
// Inisialisasi tombol
pinMode(buttonPinOn, INPUT_PULLUP); // Aktifkan resistornya agar tombol mengaktifkan sistem bekerja dengan baik
pinMode(buttonPinOff, INPUT_PULLUP); // Aktifkan resistornya agar tombol mematikan sistem bekerja dengan baik
// Inisialisasi LCD
lcd.init(); // Inisialisasi modul LCD
lcd.backlight(); // Nyalakan lampu latar LCD
lcd.setCursor(0, 0);
lcd.print("Sistem: Idle");
}
void loop() {
// Membaca status tombol mengaktifkan sistem
int buttonStateOn = digitalRead(buttonPinOn);
// Jika tombol mengaktifkan sistem ditekan, aktifkan sistem
if (buttonStateOn == LOW) {
systemActive = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem: ON ");
lcd.backlight(); // Nyalakan lampu latar LCD
delay(200); // Debouncing
// Aktifkan sumber daya seperti motor stepper dan servo di sini
}
// Membaca status tombol mematikan sistem
int buttonStateOff = digitalRead(buttonPinOff);
// Jika tombol mematikan sistem ditekan, matikan sistem
if (buttonStateOff == LOW) {
systemActive = false;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem: OFF");
lcd.noBacklight(); // Matikan lampu latar LCD
delay(200); // Debouncing
// Matikan sumber daya seperti motor stepper dan servo di sini
}
if (systemActive) {
// Gerakkan motor stepper 100 langkah jika sistem aktif
for (int i = 0; i < 100; i++) {
myStepper.step(1); // Melakukan 1 langkah
myservo.write(90); // Menggerakkan servo ke posisi tengah (90 derajat)
delay(20); // Delay 20 milidetik (sesuaikan dengan kecepatan motor stepper)
}
// Anda dapat menambahkan logika tambahan di sini jika diperlukan
// Setelah tugas selesai, kembali ke posisi awal (0 derajat)
myservo.write(0); // Menggerakkan servo ke posisi awal (0 derajat)
delay(1000); // Delay 1 detik
}
}