Tecnologia vestible

Per començar Elements d'entrada Programació CircuitPython   Recursos CITCEA
Elements no electrònics Elements de sortida Programació Arduino    
Projectes Elements de control Dades pràctiques   Inici

Simplificació de coses repetitives amb llistes

En molts programes ens trobarem coses repetitives que ens poden allargar el programa innecessàriament. En molts casos, l'ús adequat de llistes combinades amb bucles for ens permetrà escurçar significativament els programes.

Anem a veure-ho amb un exemple. El següent programa encén quatre LED seguint una seqüència:

import digitalio
import board
import time
ledA0 = digitalio.DigitalInOut(board.A0)
ledA1 = digitalio.DigitalInOut(board.A1)
ledA2 = digitalio.DigitalInOut(board.A2)
ledA3 = digitalio.DigitalInOut(board.A3)
ledA0.direction = digitalio.Direction.OUTPUT
ledA1.direction = digitalio.Direction.OUTPUT
ledA2.direction = digitalio.Direction.OUTPUT
ledA3.direction = digitalio.Direction.OUTPUT
ledA0.value = False
ledA1.value = False
ledA2.value = False
ledA3.value = False
while True:
    ledA0.value = True
    ledA3.value = False
    time.sleep(0.5)
    ledA1.value = True
    ledA0.value = False
    time.sleep(0.5)
    ledA2.value = True
    ledA1.value = False
    time.sleep(0.5)
    ledA3.value = True
    ledA2.value = False
    time.sleep(0.5)

Observem que moltes de les instruccions es repeteixen quatre cops, una vegada per a acada LED. Ara presentem un programa que fa el mateix de manera més compacta.

import digitalio
import board
import time
# Llista amb les quatre sortides que fem servir
potes = [board.A0, board.A1, board.A2, board.A3]
led = [0] * 4    # Creem una llista de quatre elements [0]
# Si no creem aquesta llista "buida" despres no entendra 
# que escriguem led[k]
# Ara guardarem un objecte sortida a cada posicio de la llista
# I apagarem tots els LED
for k in range (4):
    led[k] = digitalio.DigitalInOut(potes[k])
    led[k].direction = digitalio.Direction.OUTPUT
    led[k].value = False
while True:
    for k in range (4):
        j = k + 1
        if j > 3:
            j = 0
        led[k].value = False
        led[j].value = True
        time.sleep(0.5)

Hem guardat les quatre potes que fem servir en una llista i hem creat una llista per a les quatre sortides. La línia en la que creem la llista és molt important ja que si no hi fos no podríem adreçar individualment els elements de la llista. La creació dels objectes i l'assignació de direccions i valors les fem dins un bucle for. Un altre bucle for s'encarrega d'encendre i apagar els LED.

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.