// Servo Sweep example for the ESP32
// https://wokwi.com/projects/398319897270889473
#include <Arduino.h>
int pos = 0;
bool up = true;
int min_pulse = 410;
int max_pluse = 2038;
const int servoPin = 14;
const uint32_t freq = 50;
const uint8_t resolution = 14;
void setupPure() {
Serial.begin(115200);
Serial.println("Hello, ESP32-S2!");
ledcSetup(0, freq, resolution);
ledcAttachPin(servoPin, 0);
//ledcAttach(servoPin, freq, resolution);
}
uint32_t angleToDuty(int angle) {
int duty = map(angle, 0, 180, min_pulse, max_pluse);
constrain(duty, min_pulse, max_pluse);
return duty;
}
void writeLedc(int angle) {
int duty = angleToDuty(angle);
Serial.print("duty:");
Serial.println(duty);
ledcWrite(0, duty);
}
void loopPure() {
writeLedc(pos);
delay(20);
Serial.println(pos);
if (up)
pos += 1;
else
pos -= 1;
if (pos >= 180) {
pos = 180;
up = false;
delay(1000);
}
else if (pos <= 0) {
pos = 0;
up = true;
delay(1000);
}
}
void loopDirect() {
writeLedc(0);
delay(1000);
writeLedc(90);
delay(1000);
writeLedc(180);
delay(1000);
}
void setup() {
setupPure();
}
void loop() {
//loopPure();
loopDirect();
}