# Importer les bibliothèques
# utilisées par le programme
from gpiozero import PWMLED, Button
from signal import pause

# Connexion de la LED au GPIO 23
led = PWMLED(23)
#Connexion BP+ au GPIO 24
BoutonPlus = Button(24)
#Connexion BP- au GPIO 25
BoutonMoins = Button(25)

# Initialisation des variables
# lum est la luminosité
# mem sert à mémoriser la luminosité
# pour tester si elle a évolué
# et ne rien faire tant qu'elle reste identique
# Les variables sont en valeur décimale (sans le point)
# car les calculs en virgule flottante sont gênants
# pour ce type de calcul - les chiffres après la virgule
# faussent le résultat
lum = 0
mem = 0

# Fonction pour augmenter la luminosité
def augmente_lum():
    global lum
    # Tant que la luminosité n'est pas maximum (100%)
    # On augmente la luminosité de 10%
    if lum < 100:
        lum += 10
    
def diminue_lum():
    global lum
    # Tant que la luminosité n'est pas minimum (0%)
    # On diminue la luminosité de 10%
    if lum > 0:
        lum -= 10

# Boucle infinie
while True:
    # Appel des fonctions lors de l'appui sur les boutons
    BoutonPlus.when_pressed = augmente_lum
    BoutonMoins.when_pressed = diminue_lum

    # Est-ce que la luminosité a varié ?
    # Dans ce cas, la luminosité actuelle est différente de celle qu'on a mémorisée
    if mem != lum:
        # Afficher la luminosité à l'écran
        print ("Luminosité : ", lum, "%")
        # Appliquer la luminosité à la LED
        # Valeur divisée par 100 car value doit valoir entre 0 et 1
        led.value = lum/100
    # Mémorisation de la valeur actuelle de la luminosité
    mem = lum


pause()