#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int ledR = 13;
int btnR = 2;
int valR;
int ledG = 12;
int btnG = 3;
int valG;
int ledB = 11;
int btnB = 4;
int valB;
Servo myServo;
int pos = 0;
int step = 10;
bool display = false;
void setup() {
pinMode(btnR, INPUT_PULLUP);
pinMode(ledR, OUTPUT);
pinMode(btnG, INPUT_PULLUP);
pinMode(ledG, OUTPUT);
pinMode(btnB, INPUT_PULLUP);
pinMode(ledB, OUTPUT);
lcd.init();
lcd.backlight();
myServo.attach(10);
myServo.write(pos);
}
void loop() {
if (!display) {
lcd.setCursor(4, 0);
lcd.print("Press to");
lcd.setCursor(3, 1);
lcd.print("move servo");
delay(2000);
lcd.clear();
display = true;
}
valR = digitalRead(btnR);
if (valR == LOW) {
digitalWrite(ledR, HIGH);
if (pos + step <= 180) {
pos += step;
myServo.write(pos);
serpos(pos);
delay(200);
}
} else {
digitalWrite(ledR, LOW);
}
valG = digitalRead(btnG);
if (valG == LOW) {
digitalWrite(ledG, HIGH);
if (pos - step >= 0) {
pos -= step;
myServo.write(pos);
serpos(pos);
delay(200);
}
} else {
digitalWrite(ledG, LOW);
}
valB = digitalRead(btnB);
if (valB == LOW) {
digitalWrite(ledB, HIGH);
pos = 0;
myServo.write(pos);
serpos(pos);
delay(200);
} else {
digitalWrite(ledB, LOW);
}
}
void serpos(int position) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Servo Position:");
lcd.setCursor(0, 1);
lcd.print(position);
}