from machine import Pin  # Importation de la classe Pin du module machine pour contrôler les broches GPIO
from time import sleep   # Importation de la fonction sleep pour insérer des pauses dans le programme

# Définition des LEDs connectées aux broches GPIO spécifiques pour représenter deux routes opposées
led_verte_1 = Pin(9, Pin.OUT)  # LED verte pour la première route (voie 1)
led_orange_1 = Pin(5, Pin.OUT)  # LED orange pour la première route (voie 1)
led_rouge_1 = Pin(1, Pin.OUT)   # LED rouge pour la première route (voie 1)

led_verte_2 = Pin(18, Pin.OUT)  # LED verte pour la deuxième route (voie 2)
led_orange_2 = Pin(22, Pin.OUT)  # LED orange pour la deuxième route (voie 2)
led_rouge_2 = Pin(28, Pin.OUT)   # LED rouge pour la deuxième route (voie 2)

# Boucle infinie pour gérer l'alternance des feux de circulation entre les deux routes
while True:
    # 1) La première voie est verte, la seconde est rouge
    led_verte_1.on()  # Allume la LED verte de la voie 1
    led_rouge_1.off() # Éteint la LED rouge de la voie 1
    led_rouge_2.on()  # Allume la LED rouge de la voie 2
    
    sleep(3)  # Maintient cet état pendant 3 secondes

    # 2) Passage à l'orange sur la première voie avant de s'arrêter
    led_verte_1.off()  # Éteint la LED verte de la voie 1
    led_orange_1.on()  # Allume la LED orange de la voie 1
    sleep(1)  # Maintient l'orange pendant 1 seconde
    led_orange_1.off()  # Éteint la LED orange de la voie 1

    # 3) La première voie devient rouge, la seconde devient verte
    led_rouge_1.on()  # Allume la LED rouge de la voie 1
    led_rouge_2.off()  # Éteint la LED rouge de la voie 2
    led_verte_2.on()  # Allume la LED verte de la voie 2

    sleep(3)  # Maintient cet état pendant 3 secondes

    # 4) Passage à l'orange sur la deuxième voie avant de s'arrêter
    led_verte_2.off()  # Éteint la LED verte de la voie 2
    led_orange_2.on()  # Allume la LED orange de la voie 2
    sleep(1)  # Maintient l'orange pendant 1 seconde
    led_orange_2.off()  # Éteint la LED orange de la voie 2

    # 5) Retour à l'état initial, la deuxième voie devient rouge et la première devient verte
    led_rouge_2.on()  # Allume la LED rouge de la voie 2
    led_rouge_1.off()  # Éteint la LED rouge de la voie 1
    led_verte_1.on()  # Allume la LED verte de la voie 1
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT