from machine import Pin, PWM
import machine
import time
import utime
# Налаштовуємо PWM на 18-му піні з частотою 50 Гц
servo = PWM(Pin(1), freq=50)
led = Pin(8, Pin.OUT)
pot_pin = machine.ADC(machine.Pin(0)) # Потенціометр на GPIO 0
pot_pin.atten(machine.ADC.ATTN_11DB) # Дозволяє зчитувати до 3.3V
servo_pwm = machine.PWM(machine.Pin(2)) # Серво на GPIO 2
servo_pwm.freq(50)
def set_angle(angle):
# Конвертуємо кут (0-180) у робочий цикл duty (прибл. 20-120 для 10-бітного PWM)
# Формула для 1023-рівневого PWM: 0.5мс = 26 (0°), 2.5мс = 123 (180°)
duty = int(((angle / 180) * 97) + 26)
servo.duty(duty)
# Цикл руху туди-сюди
while True:
'''
print("0 градусів")
set_angle(0)
time.sleep(1)
print("90 градусів")
set_angle(90)
time.sleep(1)
print("180 градусів")
set_angle(180)
time.sleep(1)
'''
#for angle in range(0, 155, 2):
# set_angle(angle)
#print(f"angle {angle} ")
# time.sleep(0.03
led.value(1) # або led.on()
time.sleep(2)
led.value(0)
# Зчитуємо потенціометр (значення від 0 до 4095)
pot_value = pot_pin.read()
# Конвертуємо значення потенціометра (0-4095) у кут (0-180)
angle = (pot_value / 4095) * 180
set_angle(angle)
# Невелика затримка для стабільності
utime.sleep_ms(20)
#led.value(0)