from machine import Pin, ADC, PWM
import time
# Definizione dei pin per servo motore, fotoresistore, buzzer e LED
servo_pin = 13
photoresistor_pin = 34
buzzer_pin = 27
ledR_pin = 25
ledG_pin = 32
ledB_pin = 33
# Impostazione dei pin
servo = PWM(Pin(servo_pin), freq=50)
photoresistor = ADC(Pin(photoresistor_pin))
buzzer = Pin(buzzer_pin, Pin.OUT)
ledR = PWM(Pin(ledR_pin), freq=100)
ledG = PWM(Pin(ledG_pin), freq=100)
ledB = PWM(Pin(ledB_pin), freq=100)
# Funzione per calcolare l'intensità luminosa
def get_brightness():
return photoresistor.read()
# Funzione per suonare il buzzer
def buzz():
buzzer.on()
time.sleep(0.5)
buzzer.off()
# Funzione per controllare il comportamento dei LED in base alla luminosità
def controlLed(brightness):
if brightness < 500: # Luminosità bassa
ledR.duty(10) # Accendi il LED rosso con intensità minima
ledG.duty(100) # Accendi il LED verde con intensità media
ledB.duty(200) # Accendi il LED blu con intensità massima
else: # Luminosità alta
ledR.duty(200) # Accendi il LED rosso con intensità massima
ledG.duty(0) # Spegni il LED verde
ledB.duty(0) # Spegni il LED blu
def set_angle(angle):
duty_min = 26
duty_max = 123
servo.duty(int(duty_min+(angle/180)*(duty_max-duty_min)))
while True:
brightness = get_brightness()
set_angle(brightness//10) # Ruota il servo motore proporzionalmente alla luminosità
controlLed(brightness) # Controlla i LED in base alla luminosità
if brightness > 2000: # Se la luminosità supera la soglia
buzz() # Suona il buzzer
ledR.duty(200) # Accendi solo il LED rosso con intensità massima
ledG.duty(0) # Spegni gli altri LED
ledB.duty(0)
else:
ledR.duty(0) # Spegni il LED rosso
time.sleep(0.1) # Attendi per evitare loop troppo veloci