#define pinServo1 3
#define pinServo2 4
#define pinTombol 5
#define pinLED 6
#define pinLDR A0
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Servo servo1;
Servo servo2;
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long previousMillis = 0;
const long interval = 1000; //1000ms
uint8_t count = 0, uangMasuk = 0; //unsigned integer 8bit
void setup()
{
// inisialisasi
lcd.begin(16,2);
servo1.attach(pinServo1);
servo2.attach(pinServo2);
pinMode(pinLDR, INPUT);
pinMode(pinTombol, INPUT);
pinMode(pinLED, OUTPUT);
lcd.clear();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Vending Machine");
lcd.setCursor(0, 1);
lcd.print(" Jepang ");
delay(1000);
servo1.write(0);
servo2.write(0);
delay(1000);
lcd.setCursor(0, 0);
lcd.print("Silahkan Masukan");
lcd.setCursor(0, 1);
lcd.print(" Uang Anda ");
delay(1000);
// servo1.write(90);
// delay(1000);
// servo2.write(45);
// delay(1000);
}
void loop()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
switch (uangMasuk) {
case 1:
count = 0;
lcd.setCursor(0, 0);
lcd.print("Silahkan Pilih ");
lcd.setCursor(0, 1);
lcd.print("Barangnya ");
break;
case 2:
servo2.write(180);
digitalWrite(pinLED, HIGH);
delay(2000);
lcd.setCursor(0, 0);
lcd.print("Silahkan Ambil ");
lcd.setCursor(0, 1);
lcd.print("Barangnya ");
servo2.write(0);
digitalWrite(pinLED, LOW);
delay(3000);
uangMasuk = 0;
break;
default:
count++;
break;
}
if (count <= 5 && count > 0) {
lcd.setCursor(0, 0);
lcd.print("Vending Machine");
lcd.setCursor(0, 1);
lcd.print(" Jepang ");
}
if (count > 5) {
lcd.setCursor(0, 0);
lcd.print("Silahkan Masukan");
lcd.setCursor(0, 1);
lcd.print(" Uang Anda ");
}
if (count >= 10)
count = 0;
}
if (!digitalRead(pinLDR) && uangMasuk == 0) {
lcd.setCursor(0, 0);
lcd.print("Uang Terdeteksi ");
lcd.setCursor(0, 1);
lcd.print("Rp. 15.000,- ");
servo1.write(90);
delay(2000);
servo1.write(0);
uangMasuk = 1;
}
if (digitalRead(pinTombol) && uangMasuk == 1) {
uangMasuk = 2;
}
}