Aula 12: Entrada digital com botão

Como dito anteriormente, os pinos de GPIO também podem ser utilizados como entrada. Nesta aula, utilizaremos um botão no acionamento de um LED, que vimos nas aulas anteriores.

gif de funcionamento do projeto

Na montagem do circuito, vamos precisar de:

1x Chave Táctil Push-Button
1x LED 5 mm
1x Resistor 150 ohm
1x Resistor 6,8 kΩ
1x Protoboard
5x Jumpers macho-fêmea

Montagem do circuito

O dispositivo que utilizaremos como entrada na Raspberry Pi é um botão, do tipo push-button.

Uma chave push-button funciona como um contato que abre e fecha, sendo assim, uma chave possui dois valores, 0 ou 1, aberto ou fechado. Conectando uma chave a uma porta da placa podemos ler o valor 0 ou 1 da chave e assim tomar uma ação, que no caso do nosso exemplo será acionar o LED. 

O botão, quando pressionado, faz contato entre um lado e outro dele. Quando esse contato é fechado, essa corrente elétrica “entra” na placa e ela percebe que o botão foi pressionado. Ao escrevermos o programa, decidiremos o que fazer com essa informação.

O esquema de ligação do botão com o LED é o seguinte:

O circuito montado ficará assim:

Foto do circuito montado

Programa

A programação deste projeto é parecida com a utilizada para acender apenas o LED, utilizando as mesmas bibliotecas.

#Bibliotecas utilizadas
import RPi.GPIO as GPIO #Para utilizar os pinos de GPIO
import time #Para usar o time.sleep

GPIO.setmode(GPIO.BOARD)

pinoLED = 12 # Vamos utilizar o pino 12 da placa para o LED
pinoBotao = 11 # Vamos utilizar o pino 11 da placa para o botao
status = True # O status do LED vai começar como aceso

# Define os pinos dos leds como saida
GPIO.setup(pinoLED, GPIO.OUT)
# Define o pino do botao como entrada
GPIO.setup(pinoBotao, GPIO.IN)
GPIO.output(pinoLED, status) 

while(1): #Repete esta secao sempre
    if GPIO.input(pinoBotao) == True: #Se o botao for apertado
        status = not status #troca o status do LED
        GPIO.output(pinoLED, status) #Aplica no LED o novo status
        print("Opa!") #Escreve uma mensagem no terminal
        #Espera soltar o botao
        while (GPIO.input(pinoBotao) == True):
            time.sleep(0.1)

 

O comando “while (GPIO.input(pinoBotao) == True):” é utilizado para o programa não sair do laço “if” enquanto o botão não for solto.