PR.FT5_15· Kit RPi› Python & RPi.GPIO Próximo →
02 · Linguagem

🐍 Python & RPi.GPIO

Estrutura de um script Python, variáveis, funções, condições, ciclos e como usar a biblioteca RPi.GPIO para controlar os pinos do Raspberry Pi.

Porquê Python?

O Python é a linguagem oficial do Raspberry Pi por várias razões: é fácil de aprender, tem uma biblioteca de GPIO excelente (RPi.GPIO), e tem um ecossistema enorme para sensores, câmara, rede e inteligência artificial.

Estrutura de um script GPIO

Todo o script RPi.GPIO segue a mesma estrutura base:

Python — estrutura base
# 1. Importar bibliotecas
import RPi.GPIO as GPIO
import time

# 2. Configuração (uma vez)
GPIO.setmode(GPIO.BCM)       # numeração BCM
GPIO.setwarnings(False)    # suprimir avisos
GPIO.setup(18, GPIO.OUT)    # pino 18 como saída
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # pino 17 como entrada com pull-up

# 3. Loop principal
try:
    while True:
        # lógica do programa aqui
        time.sleep(0.1)

# 4. Limpeza ao sair (Ctrl+C)
except KeyboardInterrupt:
    GPIO.cleanup()  # SEMPRE limpar pinos no fim

Variáveis e tipos

Python
# Pinos GPIO (inteiros)
LED_PIN = 18
BTN_PIN = 17

# Valores decimais
temperatura = 23.5

# Texto
mensagem = "Olá, RPi!"

# Booleano
led_ligado = True

# Imprimir no terminal
print(f"Temperatura: {temperatura}°C")

Condições (if/elif/else)

Python
botao = GPIO.input(BTN_PIN)

if botao == GPIO.LOW:   # botão premido (pull-up ativo)
    GPIO.output(LED_PIN, GPIO.HIGH)
    print("Botão premido — LED aceso")
else:
    GPIO.output(LED_PIN, GPIO.LOW)
    print("Botão solto — LED apagado")

Ciclos (for e while)

Python
# Piscar 5 vezes
for i in range(5):
    GPIO.output(LED_PIN, GPIO.HIGH)
    time.sleep(0.3)
    GPIO.output(LED_PIN, GPIO.LOW)
    time.sleep(0.3)

# Loop contínuo
while True:
    leitura = GPIO.input(BTN_PIN)
    time.sleep(0.05)  # anti-bounce

Funções

Python
def piscar(pino, vezes=3, intervalo=0.5):
    """Faz piscar um LED 'vezes' vezes."""
    for _ in range(vezes):
        GPIO.output(pino, GPIO.HIGH)
        time.sleep(intervalo)
        GPIO.output(pino, GPIO.LOW)
        time.sleep(intervalo)

# Chamar a função
piscar(18)          # 3 vezes, 0.5s
piscar(18, 5, 0.1) # 5 vezes rápido

PWM por software

O PWM (Pulse Width Modulation) permite variar a intensidade de um LED ou a velocidade de um motor através de uma saída digital:

Python — PWM
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)  # pino 18, 1000 Hz
pwm.start(0)              # arrancar com 0% duty cycle

# Variar brilho de 0% a 100%
for brilho in range(0, 101, 5):
    pwm.ChangeDutyCycle(brilho)
    time.sleep(0.05)

pwm.stop()  # parar PWM

Comunicação série (print para monitor)

Python
# Imprimir valores de sensores no terminal
temperatura = 24.3
humidade = 65

print(f"Temp: {temperatura:.1f}°C | Hum: {humidade}%")

# Ler input do utilizador
resposta = input("Prima ENTER para continuar...")
✅
Pronto para os exercícios! Com estes fundamentos já consegues seguir todos os exercícios do Kit RPi. Consulta a lista de componentes para saber o que está incluído no teu kit.