#include<ESP32Servo.h>
int x_pin1 = 33; //analog joystick
int y_pin1 = 32;
int pos1 = 90;
int pos2 = 90;
int pm = 14; //potentiometer
int b1 = 12;
int b2 = 13;
boolean lid=true;
int posb=0;
Servo s1;
Servo s2;
Servo s3;
Servo s4;
void setup()
{
Serial.begin(115200);
pinMode(x_pin1, INPUT);
pinMode(y_pin1, INPUT);
pinMode(b1,INPUT_PULLUP);
pinMode(b2,INPUT_PULLUP);
s1.attach(19);
s1.write(pos1);
s2.attach(18);
s2.write(pos2);
s3.attach(5);
s3.write(0);
s4.attach(17);
s4.write(0);
}
void loop(){
//Analog joystick
int x_data = analogRead(x_pin1);
int y_data = analogRead(y_pin1);
int threshold = 50;
int centerValue = 2048;
if (x_data > (centerValue + threshold)) {
if (pos1 < 180) {
pos1 += 10;
s1.write(pos1);
}
} else if (x_data < (centerValue - threshold)) {
if (pos1 > 0) {
pos1 -= 10;
s1.write(pos1);
}
}
if (y_data > (centerValue + threshold)) {
if (pos2 < 180) {
pos2 += 10;
s2.write(pos2);
}
} else if (y_data < (centerValue - threshold)) {
if (pos2 > 0) {
pos2 -= 10;
s2.write(pos2);
}
}
delay(100); // Small delay to smooth the servo movement
//potentiometer
int servoPosition = map(analogRead(pm), 0 , 4096 , 0 , 180);
s3.write(servoPosition);
delay(20);
//2 button
while(digitalRead(b1)==LOW){
if(lid==true){
if(posb >= 0 && posb<=180){
posb = posb + 10;
if(posb>180){
posb = 180;
}else{
s4.write(posb);
}
}
}
delay(100);
}
while(digitalRead(b2)==LOW){
if(lid==true){
if(posb > 0 && posb<=180){
posb = posb - 10;
if(posb<0){
posb = 0;
}else{
s4.write(posb);
}
}
}
delay(100);
}
}