#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const uint8_t I2C_ADDRESS=0x2f;
const uint8_t LCD_CHAR=16;
const uint8_t LCD_LINE=2;
char TITLE_ANGLE="Angle: ";
// LiquidCrystal_I2C lcd(I2C_ADDRESS,LCD_CHAR,LCD_LINE);
LiquidCrystal_I2C lcd(0x27,LCD_CHAR,LCD_LINE);
#include <Servo.h>
Servo servo1;
int Pot_pin=A0;
int servo1_pin=3;
unsigned int servo1Angle_min=0;
unsigned int servo1Angle_max=180;
unsigned int servo1_pos=0;
unsigned int servo1_angle=0;
void setup() {
Serial.begin(9600);
Serial.println("Servo with Potentiometer");
servo1.attach(servo1_pin);
// pinMode(A5, INPUT);
// pinMode(A4, INPUT);
// servo1.write(90);
lcd.begin(16,2);
lcd.backlight();
lcd.print("Robojax Servo");
lcd.setCursor(0,1);
lcd.print("Angle: ");
delay(2000);
}
void loop() {
servo1_pos=analogRead(Pot_pin);
sendServo(servo1_pos);
delay(20);
}
void sendServo(int value){
unsigned int new_servo1_angle;
new_servo1_angle=map(value,0,1023,servo1Angle_min,servo1Angle_max);
if (servo1_angle != new_servo1_angle){
servo1.write(new_servo1_angle);
lcdDisplay(new_servo1_angle);
servo1_angle=new_servo1_angle;
delay (100);
}
}
void lcdDisplay(int angle){
clearCharacters();
// Serial.print("angle ");
// Serial.print(angle);
lcd.setCursor((unsigned)strlen(TITLE_ANGLE),1) ;
lcd.print("angle: ");
lcd.print(angle);
lcd.print((char)223);
}
void clearCharacters()
{
for (int i=(unsigned)strlen(TITLE_ANGLE)-1; i<=LCD_CHAR-1; i++)
{
lcd.setCursor (i,1); //
lcd.write(254);
}
}