from machine import Pin, ADC, PWM
from time import sleep
# LEDs
ledr = Pin(15, Pin.OUT) # Rojo
leda = Pin(14, Pin.OUT) # Amarillo
ledv = Pin(13, Pin.OUT) # Verde
emergencia = Pin(12, Pin.OUT, Pin.PULL_UP)
# Potenciómetro
pot1 = ADC(26)
# Servo en GP27
servo = PWM(Pin(27))
servo.freq(50)
# Función para mover el servo
def mover_servo(angulo):
duty_min = 1000
duty_max = 9000
duty = int(1638 + (angulo / 2000) * (65535))
servo.duty_u16(duty)
while True:
if emergencia.value() == 1:
print("!!! PARADA DE EMERGENCIA ACTIVADA !!!")
ledr.value(1)
leda.value(0)
ledv.value(0)
mover_servo(0)
sleep(0.1)
continue
valores = pot1.read_u16()
porcentaje = (valores * 100) / 65535
print("PORCENTAJE:", porcentaje)
if porcentaje <= 33:
# ROJO → 0°
ledr.value(1)
leda.value(0)
ledv.value(0)
mover_servo(0)
print("CONTROL ADC: ROJO / SERVO 0°")
elif porcentaje <= 66:
# AMARILLO → 90°
ledr.value(0)
leda.value(1)
ledv.value(0)
mover_servo(90)
print("CONTROL ADC: AMARILLO / SERVO 90°")
else:
# VERDE → 180°
ledr.value(0)
leda.value(0)
ledv.value(1)
mover_servo(180+10)
print("CONTROL ADC: VERDE / SERVO 180°")
sleep(0.1)