#include <Servo.h>
Servo servoGua;
#define SERVO_PIN 9
#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 16, 2);
#define PB1 2
#define PB2 3
#define PB3 4
#define BUZZER 7
int position;
int plus;
int soundType[4] = {0,1200,1000,800};
bool swap = false;
void setup() {
lcd.begin();
lcd.backlight();
servoGua.attach(SERVO_PIN);
pinMode(PB1, INPUT_PULLUP);
pinMode(PB2, INPUT_PULLUP);
pinMode(PB3, INPUT);
pinMode(BUZZER, OUTPUT);
lcd.setCursor(2, 0);
lcd.print("Kelas Teknik");
lcd.setCursor(4, 1);
lcd.print("Otomasi");
delay(1000);
lcd.clear();
}
void loop() {
lcd.setCursor(2, 0);
lcd.print("MOTOR SERVO");
char diServ[16];
sprintf(diServ, "Servo Digi:%3d", position);
lcd.setCursor(1, 1);
lcd.print(diServ);
servoGua.write(position);
if (digitalRead(PB1) == LOW && position < 180) {
while (digitalRead(PB1) == LOW) {}
position = position + plus;
tone(BUZZER, soundType[1]);
bunyi();
}
if(position > 180){
position = 180;
}
if (digitalRead(PB2) == LOW && position > 0) {
while (digitalRead(PB2) == LOW) {}
position = position - plus;
tone(BUZZER, soundType[2]);
bunyi();
}
if(position < 0){
position = 0;
}
if (digitalRead(PB3) == HIGH) {
while (digitalRead(PB3) == HIGH) {}
swap = !swap;
tone(BUZZER, soundType[3]);
bunyi();
}
if (swap) {
plus = 10;
}
else {
plus = 5;
}
}
void bunyi(){
delay (200);
noTone (BUZZER);
}