//LEO PEBRIANSYAH
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const uint8_t I2C_ADDRESS =0x27;
const uint8_t LCD_CHAR= 16;
const uint8_t LCD_LINE = 2;
char *TITLE_ANGLE1 ="Angle: ";
LiquidCrystal_I2C lcd(I2C_ADDRESS, LCD_CHAR, LCD_LINE);
#include <Servo.h>
Servo myservo1;
int pot1pin = A0;
unsigned int servo1Pin=9;
unsigned int servo1AngleMin=0;
unsigned int servo1AngleMax=180;
unsigned int servo1Val=0;
unsigned int angle1=0;
void setup()
{
Serial.begin(9600);
Serial.println("Servo with Potentiometer");
Serial.println("LEO PEB16");
myservo1.attach(servo1Pin);
lcd.init();
lcd.backlight();
lcd.print("alat ukur servo");
lcd.setCursor(0,1);
lcd.print("sudut: ");
delay(2000);
}
void loop()
{
servo1Val = analogRead(pot1pin);
sendServo(servo1Val);
delay(20);
}
void sendServo(int value)
{
unsigned int newAngle1;
newAngle1 = map(value, 0, 1023, servo1AngleMin, servo1AngleMax);
if(angle1 !=newAngle1)
{
myservo1.write(newAngle1);
lcdDisplay(newAngle1);
angle1 =newAngle1;
delay(100);
}
}
void lcdDisplay(int angle)
{
clearCharacters();
Serial.print("SUDUT ");
Serial.println(angle);
lcd.setCursor((unsigned)strlen(TITLE_ANGLE1), 1);
lcd.print(angle);
lcd.print((char)223);
}
void clearCharacters()
{
for (int i=(unsigned)strlen(TITLE_ANGLE1)-1; i<=LCD_CHAR-1; i++)
{
lcd.setCursor (i,1);
lcd.write(254);
}
}