Utilizando a Interface GPIO do Raspberry Pi – Parte 2

Depois dos testes com saídas, iniciei os testes com as entradas. Para quem chegou direto aqui, recomendo antes ler os testes com saídas.
Uma informação importante é que as entradas trabalham apenas com 3,3v, portando não confundam em ligar nas entradas 5V, que também estão disponíveis na GPIO.
Irei dividir o assunto de entradas em mais de uma parte para o texto não ficar muito extenso. Primeiro precisamos saber que caso algum pino seja designado como entrada ele precisa ter algo conectado, caso contrario a entrada irá “flutuar”, reportando erros de leitura. Uma forma de não deixar a entrada flutuando é usar um resistor de pull-up ou pull-down. No RPi isto pode ser feito via hardware ou software. Via hardware basta ligar um resistor de 10k ohms do pino desejado para o 3,3V (pull-up) ou para o terra (pull-down). Via software basta na hora de definir as entradas colocar pull_up_down=GPIO.PUD_UP ou pull_up_down=GPIO.PUD_DOWN.
Para definir as entradas é usada a mesma função que definimos as saídas, porém trocando OUT por IN.

GPIO.setup(channel, GPIO.IN)

Para setar as entradas juntamente com o resistor de pull-up ou pull-down:

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)

ou

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

 

Em um primeiro teste vamos fazer um polling a espera de alguma mudança no pino designado. O polling tem uma desvantagem de ocupar muito recurso de processamento. A função que vai fazer o polling é:
if GPIO.input(channel):
print("Entrada em nível alto")
else:
print("Entrada em nível baixo")
O circuito usado é o abaixo, onde neste caso está sendo usado um resistor de pull-down que pode ser removido caso o pull-up/down tenha sido feito via software.

O programa completo é este, onde caso aperte o botão ele retorna na tela "Entrada em nível alto", caso contrario fica rodando (polling) na tela "Entrada em nível baixo".

Aqui uma outra forma de fazer o mesmo, porém com while e sem o resistor de pull-down físico:

No próximo passo veremos como trabalhar com interrupções e detecções de bordas nas entradas.

 

Comentários