Jeux de lumière avec 8 LEDs

Le montage :

Connecter 8 LEDs via une résistance de 270 Ohms sur la broche 0 à 7 (=X1 à X8) de la pyboard :

Le code 1 : Défilement par fonction roll de list

# exemple pyDUino - par X. HINAULT - www.mon-fablab.fr
# Juin 2013 - Tous droits réservés - GPLv3
# MAJ oct 2017

# jeux de lumière à Leds x8 

from upyduino import *

# entete declarative
leds=[0,1,2,3,4,5,6,7]

#--- setup ---
def setup():
    print (leds) # message
    [pinMode(led, OUTPUT) for led in leds] # met les broches en sortie

    # test initial
    [digitalWrite(led, HIGH) for led in leds] # allume les LEDs
    delay(1000)
    [digitalWrite(led, LOW) for led in leds] # allume les LEDs

# -- fin setup --

# -- loop --
def loop():

    seq=[1,0,0,0,0,0,0,0] # list état initial des Leds

    while True:
        # met le dernier élément en premier = rotation vers la gauche
        seq=[seq[-1]]+seq[:-1] # solution 1
        #seq[:-1].insert(2,seq[-1]) # solution 2 => ne fonctionne pas    
        #print(seq) # debug

        for led,value in zip(leds,seq): # défile les 2 list en meme temps ! (allez faire çà en C...) 
            digitalWrite(led,int(value))

        delay(100) # entre 2 seq 

# -- fin loop --


# exécution
setup()
while True : loop()

Le code 2 : Utilisation d'une list de sequence 0/1

# exemple pyDUino - par X. HINAULT - www.mon-club-elec.fr
# Sept 2017 - Tous droits réservés - GPLv3

# Jeux de lumière à 8 Leds : utilisation d'un list de sequence 0/1

from upyduino import *

# entete declarative
leds=[0,1,2,3,4,5,6,7]

#--- setup ---
def setup():
    print (leds) # message
    [pinMode(led, OUTPUT) for led in leds] # met les broches en sortie

    # test initial
    [digitalWrite(led, HIGH) for led in leds] # allume les LEDs
    delay(1000)
    [digitalWrite(led, LOW) for led in leds] # allume les LEDs

# -- fin setup --

# -- loop --
def loop():

    # remarquer la disposition autorisée du list entre les [] (saut de ligne non significatifs)

    # séquence 1 
    """
    sequence=[
    '00000000',
    '10000001',
    '11000011',
    '11100111',
    '11111111',
    '11100111',
    '11000011',
    '10000001']
    """

    # séquence 2
    sequence=[
    '11000000',
    '01100000',
    '00110000',
    '00011000',
    '00001100',
    '00000110',
    '00000011',
    '10000001',
    ]

    compt=0

    while compt<100:

        for seq in sequence:
            for led,value in zip(leds,seq): # défile les 2 list en meme temps
                digitalWrite(led,int(value))

            delay(50) # entre 2 seq 

        compt=compt+1

# -- fin loop --


# exécution
setup()
while True : loop()