# Importation de l'interface homme machine (IHM)
from biometre import *

def init():
    ''' Définit les colonnes et les lignes comme sorties '''
    for b in colonnes:
        GPIO.setup(b,GPIO.OUT)
    for b in lignes:
        GPIO.setup(b,GPIO.OUT)
        
def eteindre():
    ''' fonction qui permet d'étendre l'afficheur '''
    GPIO.output(colonnes,[0]*8)
    GPIO.output(lignes,[0]*7)

def commander(lc,n):
    ''' Paramètres :
            lc : liste des lignes ou colonnes
            n : octet à mettre sur les broches des lignes ou colonnes '''
    tab=[]
    # créer le tableau des valeurs
    for i in range(len(lc)):
        tab.insert(0,n%2)
        n//=2
    #affectation des valeurs en sorties des lignes ou colonnes
    GPIO.output(lc,tab)

def afficher(picto,t):
    ''' permet d'afficher le pictogramme
        Paramètres:
            picto : l'un des 4 pictogrammes, une liste de 2 listes
            t : temps de défilement '''
    # répéter la boucle en fonction du nombre de colonnes   
    for i in range(len(picto[0])):
        commander(colonnes,picto[0][i])   # commande chaque colonne
        commander(lignes,picto[1][i])     # commande chaque ligne
        sleep(t)                          # pause de t en secondes

# déclaration des broches GPIO
lignes=[12,13,15,16,18,7,11]
colonnes=[33,32,35,31,36,38,40,37]

# temps de défilement entre chaque colonne en s
t=0.0025 

# déclaration des lites des pictogrammes
# repos [[valeur binaire Colonne],[valeur binaire Ligne]]
repos=[[?],[?]]
# flamme [[liste des valeurs des colonnes],[liste des valeurs des Lignes]] en décimal
flamme=[[?],[?]]
# coeur [[liste des valeurs des colonnes],[liste des valeurs des Lignes]] en HEXADECIMAL
coeur= [[?],[?]]

init()
eteindre()

def boucle():
    ''' récupère l'age,
        la féquence cardiaque fc,
        calcule les 3 seuils fc1, fc2, fc3,
        puis affiche le pictogramme adéquat '''
    
    global t,valeur
    
    age=int(age_ihm.get())  # variable qui contient l'age de l'utilisateur
    fc=int(fc_ihm.get())    # variable qui contient la fréquence cardiaque de l'utilisateur
    fcmax=?
    fc1=int(?)
    fc2=int(?)
    fc3=int(?)
    
    if fc<fc1:
        afficher(repos,t)
    elif fc<fc2:
        afficher(flamme,t)
    elif fc<fc3:
        afficher(coeur,t)
    else:
        # Allumer le pictogramme du coeur durant 200ms
        # Eteindre le pictogramme pendant 200ms
        pass
        
    Mafenetre.after(1,boucle) # relance la boucle à l'infini

Mafenetre.after(1,boucle) # Lance la boucle principale 
Mafenetre.mainloop()      # Traite les évènement de l'IHM

