#Compteur binaire 8 bits de 0 à 255 avec 8 leds.
import RPi.GPIO as GPIO  #Importation du module GPIO
import time              #Importation du module time

pins = [11, 12, 13, 15, 16, 18, 22, 7]  #Liste des numéros de pin

def setup():             #Définit la fonction setup()
        GPIO.setmode(GPIO.BOARD)        #Définit les pins par position physique
        for pin in pins:
                GPIO.setup(pin, GPIO.OUT)   #Place chaque pin en sortie
                GPIO.output(pin, GPIO.HIGH) #Place chaque pin à 1 soit(+3.3V)
		                            #pour éteindre les leds

def loop():             #Définit la fonction loop()
        a=0
        while True:
                print(a)
                if a <= 255:
                        b=a
                        b=b*2
                        if b > 255:
                                GPIO.output(11,GPIO.LOW) #(bit 7 à 1)
                                b=b-256
                        else:
                                GPIO.output(11,GPIO.HIGH)
                                 
                        b=b*2
                        if b > 255:
                                GPIO.output(12,GPIO.LOW) #(bit 6 à 1)
                                b=b-256
                        else:
                                GPIO.output(12,GPIO.HIGH)        

                        b=b*2
                        if b > 255:
                                GPIO.output(13,GPIO.LOW) #(bit 5 à 1)
                                b=b-256
                        else:
                                GPIO.output(13,GPIO.HIGH)        

                        b=b*2
                        if b > 255:
                                GPIO.output(15,GPIO.LOW) #(bit 4 à 1)
                                b=b-256
                        else:
                                GPIO.output(15,GPIO.HIGH)        

                        b=b*2
                        if b > 255:
                                GPIO.output(16,GPIO.LOW) #(bit 3 à 1)
                                b=b-256
                        else:
                                GPIO.output(16,GPIO.HIGH)        

                        b=b*2
                        if b > 255:
                                GPIO.output(18,GPIO.LOW) #(bit 2 à 1)
                                b=b-256
                        else:
                                GPIO.output(18,GPIO.HIGH)        

                        b=b*2
                        if b > 255:
                                GPIO.output(22,GPIO.LOW) #(bit 1 à 1)
                                b=b-256
                        else:
                                GPIO.output(22,GPIO.HIGH)        

                        b=b*2
                        if b > 255:
                                GPIO.output(7,GPIO.LOW) #(bit 0 à 1)
                                b=b-256
                        else:
                                GPIO.output(7,GPIO.HIGH)        

                else:
                        a=0
                                
                time.sleep(0.5)   #attendre pendant 0.5 sec
                a=a+1
                                
		
def destroy():           #Définit la fontion destroy() qui cause un arrêt
	for pin in pins: #du programme
		GPIO.output(pin, GPIO.HIGH)    # Éteint tous les leds
	GPIO.cleanup()                     # Relache le modue GPIO

if __name__ == '__main__':     # Le programme commence ici
	setup()                #Execute la fonction setup()
	try:
		loop()         #Execute la fontion loop()
	except KeyboardInterrupt:  # Si 'Ctrl+C' sont pressées exécute 
		destroy()          #la fonction destroy()

