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()