Faltava ainda um tipo qualquer de sensor para ter um sistema verdadeiramente autónomo por isso liguei um sensor de toque LEGO Mindstorms (ainda estilo RCX) a uma das entradas digitais PiFace.
O PiFace tem 8 entradas digitais com pull-ups internos (li algures que se podem desligar, deixando as entradas «flutuantes»). Como o sensor de toque RCX é um mero interruptor basta ligar um dos cabos a uma das entradas e o outro à massa. Com o sensor em repouso (interruptor aberto) a entrada do PiFace vai ler um “1” e quando ocorrer contacto (interruptor fechado) a entrada vai ficar ligada à massa e é lido um “0”.
É muito fácil acompanhar o estado do sensor, basta ler continuamente o estado da entrada. No script abixo usei a entrada #0 e acrescentei um atraso de 200 ms entre cada leitura para não inundar o terminal com mensagens “ON!” ou “OFF!”
#!/usr/bin/python3 import sys from time import sleep import pifacedigitalio pifacedigital = pifacedigitalio.PiFaceDigital() led7=pifacedigital.leds[7] led6=pifacedigital.leds[6] led7.turn_off() led6.turn_off() in0=pifacedigital.input_pins[0] while(True): if(in0.value != 0): print("ON!") else: print("OFF!) sleep(0.2)
E se quisermos usar o sensor para controlar o leão basta juntar tudo:
#!/usr/bin/python3 import sys from time import sleep import pifacedigitalio DELAY_UP = 0.17 DELAY_DOWN = 0.14 DELAY_WAIT = 0.75 pifacedigital = pifacedigitalio.PiFaceDigital() led7=pifacedigital.leds[7] led6=pifacedigital.leds[6] led7.turn_off() led6.turn_off() in0=pifacedigital.input_pins[0] while(True): if(in0.value != 0): print("Para cima!") led7.turn_on() sleep(DELAY_UP) led7.turn_off() print("Espera!") sleep(DELAY_WAIT) print("Para baixo!") led6.turn_on() sleep(DELAY_DOWN) led6.turn_off()
Para ligar o sensor à entrada #0 do Piface Digital cortei um cabo RCX a meio:
O diagrama abaixo ilustra a configuração final, no que diz respeito às ligações eléctricas: