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)
Loading
ssd1306
ssd1306