// Include the Servo library
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
// Create a servo object
Servo myServo;
LiquidCrystal_I2C lcd(0x027,16,2);
int pot = A0;
int speed=0;
// Define the servo pin
const int servoPin = 9;
int angle=0;
int direction=1;
void setup() {
// Attach the servo to pin 9
myServo.attach(servoPin);
// Initialize serial communication (optional, for debugging)
// Serial.begin(9600);
// Serial.println("Servo Motor Tutorial Started!");
lcd.begin(16,2);
lcd.backlight();
lcd.setCursor(0,0);
}
void loop() {
// Sweep from 0 to 180 degrees
// for (int angle = 0; angle <= 180; angle++) {
// myServo.write(angle);
// if(angle%10==0){
// lcd.print(angle); // Set servo position
// lcd.print(" ");
// lcd.setCursor(0,0);
// }
// delay(speed); // Wait for servo to reach position
// }
// // Sweep back from 180 to 0 degrees
// for (int angle = 180; angle >= 0; angle--) {
// myServo.write(angle);
// if(angle%10==0){
// lcd.print(angle); // Set servo position
// lcd.print(" "); // Set servo position
// lcd.setCursor(0,0);
// }
// delay(speed); // Wait for servo to reach position
// }
speed = analogRead(pot);
speed= map(speed, 0, 1023, 10,1);
if(angle>180){
angle=180;
direction=-1;
}
if(angle<0){
angle=0;
direction =1;
}
angle +=direction;
myServo.write(angle);
delay(speed);
lcd.setCursor(0,0);
lcd.print("Angle: ");
lcd.print(angle);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Speed: ");
lcd.print(10- speed+1);
lcd.print(" ");
}