from machine import Pin, I2C, ADC
from ssd1306 import SSD1306_I2C
import time

# Configuration des broches pour le Joystick
pin_vrx = 26
pin_vry = 27
pin_sw = 4

# Configuration des broches pour les LEDs RGB
pin_red = 12
pin_green = 2
pin_blue = 14

# Configuration de l'écran OLED
oled = SSD1306_I2C(128, 64, I2C(0, scl=Pin(1), sda=Pin(0), freq=200000))

# Configuration des broches ADC pour VRx et VRy du Joystick
adc_vrx = ADC(Pin(pin_vrx))
adc_vry = ADC(Pin(pin_vry))

# Configuration de la broche numérique pour SW du Joystick
sw_pin = Pin(pin_sw, Pin.IN, Pin.PULL_UP)

# Configuration des broches pour les LEDs RGB
led_red = Pin(pin_red, Pin.OUT)
led_green = Pin(pin_green, Pin.OUT)
led_blue = Pin(pin_blue, Pin.OUT)

# Nouvelles configurations pour le changement de mode d'éclairage
num_modes = 3  # Nombre total de modes d'éclairage
current_mode = 0  # Mode d'éclairage actuel (initialisé à 0)

# Nouvelle fonction pour changer le mode d'éclairage
def change_lighting_mode():
    global current_mode
    current_mode = (current_mode + 1) % num_modes  # Passage au mode suivant

# Fonction pour lire les valeurs du Joystick
def read_joystick():
    vrx_value = adc_vrx.read_u16()
    vry_value = adc_vry.read_u16()
    sw_value = sw_pin.value()
    return vrx_value, vry_value, sw_value

def control_leds(vrx, vry, sw):
    led_red.value(0)
    led_green.value(0)
    led_blue.value(0)

    if sw == 1:
        if current_mode == 0:
            if vrx > 3500:
                led_red.value(1)
            elif vrx < 2000:
                led_blue.value(1)

            if vry > 3500:
                led_green.value(1)
        elif current_mode == 1:
            if vrx > 3500:
                # Clignotement de la lampe rouge
                if (time.ticks_ms() // 500) % 2 == 0:
                    led_red.value(1)
                else:
                    led_red.value(0)
            elif vrx < 2000:
                # Clignotement de la lampe bleue
                if (time.ticks_ms() // 500) % 2 == 0:
                    led_blue.value(1)
                else:
                    led_blue.value(0)

            if vry > 3500:
                # Clignotement de la lampe verte
                if (time.ticks_ms() // 500) % 2 == 0:
                    led_green.value(1)
                else:
                    led_green.value(0)
        elif current_mode == 2:
            # Implémentez le comportement pour le mode de transition
            pass

while True:
    # Lecture des valeurs du Joystick
    vrx, vry, sw = read_joystick()

    # Si le bouton est enfoncé, changer le mode d'éclairage
    if sw == 0:
        change_lighting_mode()

    # Affichage des valeurs sur l'écran OLED
    oled.fill(0)
    oled.text("VRx: {}".format(vrx), 0, 0, 1)
    oled.text("VRy: {}".format(vry), 0, 10, 1)
    oled.text("SW: {}".format(sw), 0, 20, 1)
    
    # Affichage du mode correspondant à la description
    mode_names = ["fixe", "clignotant", "transition"]
    oled.text("Mode: {}".format(mode_names[current_mode]), 0, 30, 1)

    # Contrôle des LEDs en fonction des valeurs du Joystick et du mode d'éclairage
    control_leds(vrx, vry, sw)

    # Afficher les messages sur l'écran OLED
    oled.show()

    # Pause pour éviter un rafraîchissement trop rapide
    time.sleep_ms(100)
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT
Loading
ssd1306