#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>
const int stepsPerRevolution = 50;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C umumnya 0x27 untuk modul LCD 16x2
const int buttonPin1 = 2; // Pin tombol 1
const int buttonPin2 = 3; // Pin tombol 2
int buttonState1 = 0; // Status tombol 1
int buttonState2 = 0; // Status tombol 2
int speed = 60; // Kecepatan awal motor
bool button2Pressed = false; // Menyimpan status tombol 2
void setup() {
myStepper.setSpeed(speed); // Set kecepatan awal motor
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print("Viper Mobil");
// Inisialisasi pin tombol
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop() {
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
if (buttonState1 == HIGH) {
lcd.setCursor(0, 1);
lcd.print("Viper ON ");
// Mengatur kecepatan motor ke nilai tetap
myStepper.setSpeed(speed);
// Langsung berputar satu langkah searah segera saat tombol 1 ditekan
myStepper.step(stepsPerRevolution);
delay(100);
// Berputar satu langkah sebaliknya setelah delay
myStepper.step(-stepsPerRevolution);
delay(100);
} else {
lcd.setCursor(0, 1);
lcd.print("Viper OFF ");
}
if (buttonState2 == HIGH && !button2Pressed) {
// Menambah kecepatan saat tombol 2 ditekan
speed += 50;
if (speed > 200) {
speed = 200; // Batasi kecepatan maksimum jika diperlukan
}
button2Pressed = true; // Tombol 2 telah ditekan
} else if (buttonState2 == LOW) {
button2Pressed = false; // Tombol 2 dilepas
}
// Tampilkan nilai kecepatan pada LCD
lcd.setCursor(12, 1); // Posisi untuk menampilkan nilai kecepatan
lcd.print(speed); // Menampilkan nilai kecepatan
}