P2-012
← Všetky témyPython v STEMlabe · 04 / 18

Python a GPIO na Raspberry Pi

Poznámka

GPIO (General Purpose Input/Output) sú piny na Raspberry Pi, ktorými môžeš z Pythonu ovládať LED, tlačidlá, motory či senzory. Pracujú s logikou 3,3 V (Napäťové úrovne).

Knižnica gpiozero

Knižnica gpiozero je odporúčaný spôsob práce s GPIO – je jednoduchšia ako staršia RPi.GPIO.

pip3 install gpiozero      # zvyčajne je už predinštalovaná na Raspberry Pi OS

Rozsvietenie LED

from gpiozero import LED
from time import sleep

led = LED(17)               # LED pripojená na GPIO pin 17

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

Upozornenie

LED diódu pripájaj na GPIO pin vždy cez predradný odpor (typicky 220–330 Ω) – priame pripojenie môže pin alebo diódu zničiť (Napájanie a prúdové limity).

Čítanie tlačidla

from gpiozero import Button
from time import sleep

tlacidlo = Button(2)        # tlačidlo na GPIO pine 2

while True:
    if tlacidlo.is_pressed:
        print("Tlačidlo stlačené")
    sleep(0.1)

Tip

gpiozero vie aj priamo reagovať na zmenu stavu – namiesto cyklu môžeš použiť tlacidlo.when_pressed = funkcia, ktorá sa zavolá automaticky pri stlačení.

PWM – plynulé riadenie

PWM (Pulse Width Modulation) umožňuje plynulo riadiť jasnosť LED alebo rýchlosť motora.

from gpiozero import PWMLED
from time import sleep

led = PWMLED(17)

for jas in range(0, 101, 5):    # 0 % až 100 % po krokoch 5 %
    led.value = jas / 100
    sleep(0.1)

Servo motor

from gpiozero import Servo
from time import sleep

servo = Servo(18)

servo.min()                 # krajná pozícia
sleep(1)
servo.mid()                  # stredná pozícia
sleep(1)
servo.max()                  # druhá krajná pozícia

Mini-úlohy – GPIO

  1. Pripoj LED na GPIO 17 cez predradný odpor a roznes ju blikať s periódou 0,5 s.
  2. Pripoj tlačidlo na GPIO 2 – pri stlačení nech sa LED rozsvieti, inak zostane zhasnutá.
  3. Pomocou PWMLED vytvor efekt plynulého “dýchania” LED (jas hore a dole).
  4. Skús ovládať servo motor medzi tromi pozíciami so spätnou väzbou na konzolu (print).

Cheat sheet – rýchla referencia

from gpiozero import LED, Button, PWMLED, Servo

led = LED(17)                 # digitálny výstup
led.on() / led.off()

tlacidlo = Button(2)          # digitálny vstup
tlacidlo.is_pressed           # True/False

pwm_led = PWMLED(17)          # PWM výstup (0.0 - 1.0)
pwm_led.value = 0.5

servo = Servo(18)             # servo motor
servo.min() / servo.mid() / servo.max()
Postup sa ukladá iba v tomto prehliadači.
18 kapitol · vyhľadávanie aj v texte