#include <Servo.h>
#define BUTTON_PIN 2
#define LED_PIN 13
Servo roller1; // pin 3
Servo roller2; // pin 5
Servo lipat1; // pin 6 (lipatan bawah)
Servo lipat2; // pin 11 (lipatan atas)
bool sedangLipat = false;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
roller1.attach(3);
roller2.attach(5);
lipat1.attach(6);
lipat2.attach(11);
// Posisi awal semua servo
stopRoller();
lipat1.write(0);
lipat2.write(0);
digitalWrite(LED_PIN, LOW);
Serial.println("Mesin Lipat Kertas SIAP!");
Serial.println("Tekan tombol hijau untuk mulai melipat");
}
void loop() {
// Hanya tombol untuk start (tanpa sensor)
if (digitalRead(BUTTON_PIN) == LOW && !sedangLipat) {
delay(20); // debounce sederhana
if (digitalRead(BUTTON_PIN) == LOW) { // pastikan masih ditekan
prosesLipat();
}
}
}
void prosesLipat() {
sedangLipat = true;
digitalWrite(LED_PIN, HIGH);
Serial.println("Mulai melipat kertas...");
tarikKertas(1300);
lipatBawah();
tarikKertas(1200);
lipatAtas();
keluarkanKertas(1500);
digitalWrite(LED_PIN, LOW);
Serial.println("Selesai! Siap untuk kertas berikutnya.");
delay(1000);
sedangLipat = false;
}
void tarikKertas(int ms) {
roller1.write(180);
roller2.write(0);
delay(ms);
stopRoller();
}
void keluarkanKertas(int ms) {
roller1.write(0);
roller2.write(180);
delay(ms);
stopRoller();
}
void stopRoller() {
roller1.write(90);
roller2.write(90);
}
void lipatBawah() {
Serial.println(" Lipatan pertama (bawah)");
lipat1.write(90);
delay(700);
lipat1.write(0);
delay(500);
}
void lipatAtas() {
Serial.println(" Lipatan kedua (atas)");
lipat2.write(90);
delay(700);
lipat2.write(0);
delay(500);
}