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

Entrades i sortides binàries

Per fer servir les entrades i sortides binàries cal primer definir un objecte per a cada una d'elles. Tot seguit caldrà ajustar-ne les propietats. Un cop fet això, ja podrem fer servir les entrades i sortides. Vegem primer com ho faríem amb una sortida.

import board
import digitalio
import time
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
while True:
    led.value = True  # Encen el LED
    time.sleep(0.5)
    led.value = False  # Apaga el LED
    time.sleep(0.5)

L'objecte l'hem anomenat led perquè en aquest cas aquesta sortida correspon al led de la placa. Podríem posar qualsevol altre nom. L'objecte led correspon a una entrada o sortida (DigitalInOut, de la biblioteca digitalio). Aquesta entrada o sortida està assignada a la pota D13 (definida a la biblioteca board).

Després ajustem la propietat direction de l'objecte led. Li diem que és de sortida mitjançant la comanda OUTPUT que està a Direction de la biblioteca digitalio.

Per activar i desactivar la sortida posem a True o a False el valor de l'objecte.

En el cas de les entrades tenim una línia més en la que hem d'especificar si es fan servir les resistències internes de l'entrada. Cada entrada disposa d'unes resistències internes que estan connectades entre l'entrada i el positiu (resistència pull-up) i entre l'entrada i el negatiu (resistència pull-down). Aquestes resistències internes es poden activar i desactivar i ens permeten estalviar-nos de posar-les en el circuit extern quan fem servir polsadors i elements similars. Quan fem servir elements que donen directament tensió o si posem resistències externes serà necessari desactivar-les. Si posem la resistència pull-up el polsador es connectarà entre la pota i GND i quan es premi el polsador es desactivarà l'entrada. Si, en canvi, posem la de pull-down el polsador es connectarà entre la pota i el positiu i quan es premi s'activarà l'entrada. Si no en necessitem cap de les dues posarem None.

En el cas de la placa Circuit Playground Express podem provar-ho amb els polsadors que incorpora la placa (connectats a D4 i a D5) que estan pensats per funcionar amb pull-down. El següent programa encén el LED quan premem un dels polsadors i ens escruiu quin dels dos hem fet servir.

import digitalio
import board
import time
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
botoA = digitalio.DigitalInOut(board.D4)
botoA.direction = digitalio.Direction.INPUT
botoA.pull = digitalio.Pull.DOWN
botoB = digitalio.DigitalInOut(board.D5)
botoB.direction = digitalio.Direction.INPUT
botoB.pull = digitalio.Pull.DOWN
while True:
    if botoA.value:
        print("Polsador A premut")
        led.value = True  # Encen el LED
    if botoB.value:
        print("Polsador B premut")
        led.value = True  # Encen el LED
    if ((not botoA.value) and (not botoB.value)):
        led.value = False  # Apaga el LED
    time.sleep(0.01)

En el següent exemple per a la placa Circuit Playground Express provem tres entrades A6, A7 i A5 amb les diferents configuracions. Si no hi tenim cap polsador, podem provar de connectar-les amb cables de prova. A la pota A6 ens sortirà el missatge quan la connectem a GND i en les altres dues serà quan connectem a la pota 3.3V.

import digitalio
import board
import time
boto0 = digitalio.DigitalInOut(board.A6)
boto0.direction = digitalio.Direction.INPUT
boto0.pull = digitalio.Pull.UP
boto1 = digitalio.DigitalInOut(board.A7)
boto1.direction = digitalio.Direction.INPUT
boto1.pull = digitalio.Pull.DOWN
boto2 = digitalio.DigitalInOut(board.A5)
boto2.direction = digitalio.Direction.INPUT
boto2.pull = None
while True:
    if not boto0.value:
        print("Polsador A6 premut")
    if boto1.value:
        print("Polsador A7 premut")
    if boto2.value:
        print("Polsador A5 premut")
    time.sleep(0.01)

En el següent exemple per a la placa Gemma M0 provem tres entrades D0, D1 i D2 amb les diferents configuracions. Si no hi tenim cap polsador, podem provar de connectar-les amb cables de prova. A la pota 0 ens sortirà el missatge quan la connectem a GND i en les altres dues serà quan connectem a la pota 3.3V.

import digitalio
import board
import time
boto0 = digitalio.DigitalInOut(board.D0)
boto0.direction = digitalio.Direction.INPUT
boto0.pull = digitalio.Pull.UP
boto1 = digitalio.DigitalInOut(board.D1)
boto1.direction = digitalio.Direction.INPUT
boto1.pull = digitalio.Pull.DOWN
boto2 = digitalio.DigitalInOut(board.D2)
boto2.direction = digitalio.Direction.INPUT
boto2.pull = None
while True:
    if not boto0.value:
        print("Polsador 0 premut")
    if boto1.value:
        print("Polsador 1 premut")
    if boto2.value:
        print("Polsador 2 premut")
    time.sleep(0.01)

El següent programa controla el LED amb l'interruptor de la placa Circuit Playground Express. Fixem-nos que en aquest cas hem optat per assignar directament el valor al LED en lloc de fer servir sentències if.

import digitalio
import board
import time
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
int = digitalio.DigitalInOut(board.SLIDE_SWITCH)
int.direction = digitalio.Direction.INPUT
int.pull = digitalio.Pull.UP
while True:
    led.value = not int.value
    time.sleep(0.01)

 

 

 

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.