//CON LIBRERÍA SERVO
/*
#include <ESP32Servo.h>
const int servoPin = 13; // Pin para el servo
Servo myServo; // Crear un objeto servo
void setup() {
Serial.begin(115200);
myServo.attach(servoPin); // Adjuntar el servo al pin especificado
myServo.write(0);
delay(100);
}
void loop() {
// Rampa de subida de 0 a 180 grados en 1 segundo
Serial.println("Inicio de la rampa de subida");
for (int angle = 0; angle <= 180; angle++) {
myServo.write(angle); // Establecer la posición del servo
Serial.println(angle);
delay(5); // Aproximadamente 5 ms entre cada paso (esto garantiza 1 segundo para la subida)
}
Serial.println("Fin de la rampa de subida");
delay(1000); // Mantener el valor por 1 segundo a 180 grados
// Rampa de bajada de 180 a 0 grados en 1 segundo
Serial.println("Inicio de la rampa de bajada");
for (int angle = 180; angle >= 0; angle--) {
myServo.write(angle); // Establecer la posición del servo
Serial.println(angle);
delay(5); // Aproximadamente 5 ms entre cada paso (esto garantiza 1 segundo para la bajada)
}
Serial.println("Fin de la rampa de bajada");
delay(1000); // Esperar 1 segundo antes de repetir el ciclo
}
*/
/*
const int servoPin = 13; // Pin para el servo
int ledChannel = 0;
int frequency = 100; //Si mi periodo es de 10 ms --> f = 1/T = 1/0.01 = 100 Hz
int resolution = 10; // 2^10 = 1024 --> 0-1023
int dutyCycle = 154; //Inicialmente está a 1.5 ms on, 8.5 off = 0.15*1024 = 154; //Se ecuentra a un 15% activo
void setup() {
Serial.begin(115200);
ledcSetup(ledChannel, frequency, resolution);
ledcAttachPin(servoPin, ledChannel);
ledcWrite(ledChannel, dutyCycle);
}
void loop(){
// De 0 grados a 180 en aprox 1 seg
// 180 grados = 2ms on, 8 ms off = 0.20*1024 = 205 //Se encuentra con ton = 20%
Serial.println("0 grados");
for (dutyCycle = 35; dutyCycle <= 255; dutyCycle++) {
ledcWrite(ledChannel, dutyCycle);
Serial.println(dutyCycle);
delay(4.54);
}
Serial.println("180 grados");
for (dutyCycle = 255; dutyCycle >= 35; dutyCycle--) {
ledcWrite(ledChannel, dutyCycle);
Serial.println(dutyCycle);
delay(4.54);
}
delay(10);
}
*/
const int servoPin = 13; // Pin conectado al servo
int ledChannel = 0;
int frequency = 100; // Frecuencia de 100 Hz
int resolution = 8; // Resolución de 8 bits (0-255)
int dutyCycle = 14; // Posición inicial (0°)
void setup() {
Serial.begin(115200);
ledcSetup(ledChannel, frequency, resolution); // Configura el PWM
ledcAttachPin(servoPin, ledChannel); // Asocia el canal al pin
}
void loop() {
// Movimiento de 0° a 180° en aproximadamente 1 segundo
for (dutyCycle = 14; dutyCycle <= 63; dutyCycle++) { // De 0° a 180°
ledcWrite(ledChannel, dutyCycle); // Establece la posición del servo
delay(20); // Espera 20 ms entre pasos 63-14 = 49 * 20ms = 1s
}
// Movimiento de 180° a 0° en aproximadamente 1 segundo
for (dutyCycle = 63; dutyCycle >= 14; dutyCycle--) { // De 180° a 0°
ledcWrite(ledChannel, dutyCycle); // Establece la posición del servo
delay(20); // Espera 20 ms entre pasos
}
}