from machine import Pin, ADC, PWM, I2C
import utime
from ssd1306 import SSD1306_I2C
# Configuración de PWM para el servomotor
s = PWM(Pin(0))
s.freq(50)
# Configuración del potenciómetro
adc = ADC(0)
# Configuración de la pantalla OLED SSD1306 (I2C)
i2c = I2C(0, scl=Pin(5), sda=Pin(4))
oled = SSD1306_I2C(128, 64, i2c)
while True:
# Leer valor del potenciómetro y convertir a ángulo (0-180°)
pot = int(adc.read_u16() * 180 / 65535)
# Calcular tiempo de encendido en nanosegundos para el servo
ton = (pot + 45) * 100000 // 9
s.duty_ns(int(ton))
# Mostrar en la pantalla OLED
oled.fill(0) # Limpiar pantalla
oled.text("Angulo Servo:", 0, 10)
oled.text(str(pot) + " grados", 0, 30)
oled.show()
print(pot)
utime.sleep_ms(200)