#include Servo servo1; Servo servo2; const int POT_PIN = A2; const int SERVO_PIN_1 = D9; // On XIAO ESP32-C3, D9 is BOOT-related; D8 is safer if possible const int SERVO_PIN_2 = D8; int anavalue = 0; void setup() { Serial.begin(115200); // optional for ADC pinMode(POT_PIN, INPUT); // 50Hz is the standard servo refresh rate servo1.setPeriodHertz(50); servo2.setPeriodHertz(50); // SG90 typical pulse range (adjust if your servo behaves oddly) servo1.attach(SERVO_PIN_1, 500, 2400); servo2.attach(SERVO_PIN_2, 500, 2400); } void loop() { anavalue = analogRead(POT_PIN); // typically 0..4095 on ESP32 ADC anavalue = constrain(anavalue, 0, 4095); // Map pot -> angles int angle1 = map(anavalue, 0, 4095, 0, 180); // normal phase int angle2 = 180 - angle1; // opposite phase // Safety clamp angle1 = constrain(angle1, 0, 180); angle2 = constrain(angle2, 0, 180); // Drive servos servo1.write(angle1); servo2.write(angle2); // Debug Serial.print("ADC="); Serial.print(anavalue); Serial.print(" angle1="); Serial.print(angle1); Serial.print(" angle2="); Serial.println(angle2); delay(20); // ~50Hz update }