Uma chave de botão é um dispositivo de entrada simples, mas eficaz, frequentemente usado em projetos como processos de partida ou parada, LEDs controlando ou acionando eventos. Este tutorial o levará conectando uma chave de botão ao Raspberry Pi, configurando a fiação e escrevendo um script python para detectar pressionamentos de botão.
O que você precisará
- Raspberry Pi (Qualquer modelo com suporte GPIO, por exemplo, PI 3, PI 4)
- Interruptor de botão
- Fios de pão e jumper
- Resistor (10kΩ para puxar)
- Python instalado no seu Raspberry Pi
- Biblioteca GPIO Para controlar os pinos GPIO do Raspberry Pi
Etapa 1: Fiação do botão para o Raspberry Pi
Uma chave de botão funciona conectando o pino GPIO a um estado alto (3,3V) quando pressionado ou puxando -o para baixo (0V) quando não for pressionado. Usaremos um resistor pull-down para garantir que o pino GPIO lê baixo quando o botão não for pressionado.
Ligando o botão
| Pino de botão | Pino GPIO de Raspberry Pi | 
|---|---|
| Um pino | Gpio17 (pino 11) | 
| Outro pino | Terra (pino 6) | 
| Um pino | Resistor de 10kΩ ao solo | 
Aqui está a configuração da fiação:
- Conecte um terminal do botão para Gpio17 (Pino 11).
- Conecte o outro terminal do botão para Chão (Pino 6).
- Conectar um resistor de 10kΩ entre Gpio17 e Chão Atuar como um resistor de puxar.
Isso garante que, quando o botão for pressionado, o GPIO17 lê alto (3,3V) e, quando não é pressionado, o GPIO17 é puxado para baixo (0V) pelo resistor.
Etapa 2: Ativar pinos GPio em Python
- 
Primeiro, atualize a lista de pacotes do Raspberry Pi: sudo apt update sudo apt upgrade -y
- 
Instale a biblioteca Python GPIO necessária (se ainda não estiver instalada): sudo apt install python3-rpi.gpio
- 
Importe a biblioteca em seu script Python: import RPi.GPIO as GPIO import time
Etapa 3: Escrevendo o código Python
Agora, vamos escrever um script python para detectar quando o botão é pressionado e agir de acordo.
Exemplo de código Python
import RPi.GPIO as GPIO
import time
# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM)        # Use BCM numbering
button_pin = 17               # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # Set up pin with pull-down resistor
# Function to detect button press
def button_callback(channel):
    print("Button was pressed!")
# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)
try:
    print("Press the button...")
    while True:
        # Keep the program running to wait for button press
        time.sleep(0.1)
except KeyboardInterrupt:
    print("Program exited")
finally:
    GPIO.cleanup()  # Clean up GPIO to ensure a clean exit
Explicação de código:
- Gpio.setMode (gpio.bcm): Define a numeração do pino GPIO no modo BCM (Broadcom).
- Gpio.setup (button_pin, gpio.in, pull_up_down = gpio.pud_down): Configura o pino do botão como uma entrada com um resistor pull-down, o que significa que ele lerá baixo quando não for pressionado.
- 
Gpio.add_event_detect (): button_callbackQuando o botão é pressionado.
- time.sleep (0,1): Mantém o script funcionando, permitindo que ele aguarde uma pressão de botão.
- Gpio.cleanup (): Limpe as configurações do GPIO quando o script é excitado.
Etapa 4: testando o botão
- 
Execute seu script python: python3 button.py
- 
Pressione o botão de pressão e observe a mensagem "O botão foi pressionado!" no terminal. 
Etapa 5: Aplicações
Aqui estão algumas idéias para usar o botão em seus projetos:
- Controle um LED: Use o botão para atribuir e desativar um LED.
- Acionar um evento: Inicie ou pare um processo (por exemplo, inicie um motor, ligue um ventilador ou inicie um script).
- Campainha inteligente: Use o botão como campainha para enviar uma notificação ao seu telefone.
- Entrada do usuário: Obtenha entrada simples do usuário para seus projetos (como uma resposta "sim/não").
Solução de problemas
- 
Botão não detectado: - Verifique se o botão está conectado corretamente com o resistor de pull-down.
- Verifique duas vezes sua configuração de pino GPIO no código.
 
- 
Erro gpio: - Verifique se a biblioteca GPIO está instalada corretamente e se os números de pinos no seu script estão corretos.
 
- 
Salto de botão: - Se você notar que vários botões pressionam sendo detectados, poderá adicionar um tempo de debounce (bouncetime=300no script) para evitar detecções falsas.
 
- Se você notar que vários botões pressionam sendo detectados, poderá adicionar um tempo de debounce (
Conclusão
Usar uma chave de botão com o Raspberry Pi é uma maneira fácil de adicionar a funcionalidade de entrada aos seus projetos. Seja alternando LEDs, desencadeando eventos ou interagindo com outros hardware, essa configuração simples pode ser a base para muitas aplicações interessantes. Experimente diferentes pinos GPIO e configurações de Debounce para atender às suas necessidades!
 
            
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
       
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  