#include <Servo.h>
Servo servoH;
#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 16, 2);
#define SW1 2
#define SW2 3
#define SW3 4
#define buzz 5
#define SERVO 9
int POSITION = 0;
int i = 5;
void setup() {
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT);
pinMode(buzz, OUTPUT);
lcd.begin();
lcd.backlight();
servoH.attach(SERVO);
lcd.setCursor(2, 0);
lcd.print("KELAS TEKNIK");
lcd.setCursor(4, 1);
lcd.print("OTOMASI");
tone(buzz, 1000);
delay(1000);
noTone(buzz);
lcd.clear();
}
void loop() {
servoH.write(POSITION);
lcd.setCursor(0, 0);
lcd.print("MOTOR SERVO " );
char buffer [16];
sprintf(buffer, "Servo Degree:%3d", POSITION);
lcd.setCursor (0, 1);
lcd.print(buffer);
if (digitalRead(SW1) == 0 && POSITION < 180){
while (digitalRead(SW1) ==0){}
POSITION = POSITION + i;
sound();
if (POSITION > 180){
POSITION = 180;
}
}
if (digitalRead(SW2) == 0 && POSITION > 0){
while (digitalRead(SW2) ==0){}
POSITION = POSITION - i;
sound();
if (POSITION < 0){
POSITION = 0;
}
}
if (digitalRead(SW3) == 1 && POSITION < 180){
while (digitalRead(SW3) ==1){}
i += 5;
sound();
}
if (i > 10){
i=5;
}
}
void sound() {
tone(buzz, 1000);
delay(200);
noTone(buzz);
}