from machine import Pin, PWM
from utime import sleep
servo = PWM(Pin(15)) # Pino GPIO 15
servo.freq(50) # Frequência de 50Hz (para servo)
while True:
# Posição 0 graus (pulso de 1 ms = 1_000_000 ns)
servo.duty_ns(1000000)
sleep(1)
# Posição 90 graus (pulso de 1.5 ms = 1_500_000 ns)
servo.duty_ns(1500000)
sleep(1)
# Posição 180 graus (pulso de 2 ms = 2_000_000 ns)
servo.duty_ns(2000000)
sleep(1)
for graus in [0, 45, 90, 135, 180]:
# Converte o ângulo em graus (0 a 180) para o valor de pulso em nanosegundos
# Pulso mínimo (0°) = 1.000.000 ns (1 ms)
# Pulso máximo (180°) = 2.000.000 ns (2 ms)
duty = int(1000000 + (graus / 180) * 1000000)
# Define o pulso PWM para o servo com o valor calculado
servo.duty_ns(duty)
# Imprime no console o ângulo atual e o valor do pulso enviado
print(f"Servo em {graus} graus (duty_ns = {duty})")
# Aguarda 1 segundo para o servo alcançar a posição
sleep(1)