#include <pwmWrite.h>
const int servoPin = 8;
// units in degrees per second
float speed = 70.0;
// When easing constant (ke) < 1.0, return value is normalized, when 1.0, returns pulse width (μs)
// ke = 0.0 is linear, between 0.0 and 1.0 is tunable sigmoid, 1.0 is normal response
// Normalized Tunable Sigmoid: https://www.desmos.com/calculator/ejkcwglzd1
float ke = 0.5;
// go to position (degrees)
uint8_t pos = 0;
// duration of travel in ms is degrees to move / speed * 1000
float dur = 180.0 / speed * 1000.0;
uint32_t prevMs;
Pwm pwm = Pwm();
void setup() {
Serial.begin(115200);
delay(2000);
}
void loop() {
uint32_t ms = millis();
float ye;
if (ms - prevMs > dur) {
prevMs = ms;
pos = (pos == 0) ? 180 : 0;
}
ye = pwm.writeServo(servoPin, pos, speed, ke);
Serial.println(ye);
delay(10);
}