WelcomeHere.ro
NIVEL: UȘOR

Tutorial: Controlul unui LED cu Python pe Raspberry Pi

Acesta este echivalentul "Hello, World!" pentru interacțiunea hardware pe Raspberry Pi. Vom învăța cum să scriem un script Python simplu pentru a face un LED să clipească, controlând pinii GPIO.

Componente Necesare

  • 1x Placă Raspberry Pi (cu OS instalat)
  • 1x LED
  • 1x Rezistor de 330Ω
  • 1x Breadboard și fire de legătură

Ce sunt pinii GPIO?

GPIO înseamnă General Purpose Input/Output. Aceștia sunt pinii fizici de pe placa Raspberry Pi care ne permit să conectăm și să controlăm componente electronice. Ei sunt puntea de legătură dintre lumea software (codul nostru Python) și lumea hardware (LED-uri, butoane, senzori).

Asamblarea Circuitului

Conectăm LED-ul la un pin GPIO (de exemplu, GPIO 17) și la masă (GND). Rezistorul este esențial pentru a limita curentul și a proteja atât LED-ul, cât și placa Raspberry Pi.

Schema circuitului LED pe Raspberry Pi

Codul Sursă (Python)

Deschide un editor de text pe Raspberry Pi (cum ar fi Thonny sau nano), salvează codul de mai jos într-un fișier numit `blink.py`, apoi rulează-l din terminal cu comanda `python blink.py`.

import RPi.GPIO as GPIO
import time

# Defineste pinul GPIO la care este conectat LED-ul
LED_PIN = 17

# Seteaza modul de numerotare al pinilor (BCM se refera la numerele "GPIO x")
GPIO.setmode(GPIO.BCM)
# Seteaza pinul LED-ului ca fiind de iesire
GPIO.setup(LED_PIN, GPIO.OUT)

print("Programul a pornit. Apasa CTRL+C pentru a opri.")

try:
    # Bucla infinita pentru a face LED-ul sa clipeasca
    while True:
        # Aprinde LED-ul
        GPIO.output(LED_PIN, GPIO.HIGH)
        print("LED ON")
        # Asteapta o secunda
        time.sleep(1)
        
        # Stinge LED-ul
        GPIO.output(LED_PIN, GPIO.LOW)
        print("LED OFF")
        # Asteapta o secunda
        time.sleep(1)

except KeyboardInterrupt:
    # Opreste programul elegant cand se apasa CTRL+C
    print("Program oprit.")

finally:
    # Curata setarile GPIO pentru a lasa pinii liberi
    GPIO.cleanup()