RP–01 · Raspberry Pi başlangıç projesi

Raspberry Pi ile LED Yakıp Söndürme

Raspberry Pi'nin "Merhaba Dünya"sı: bir LED'i GPIO pininden Python ile kontrol edeceğiz. Ardından yazılımsal PWM ile LED'e yavaşça parlayıp sönen bir nefes efekti vereceğiz.

SeviyeBaşlangıç
Süre25–30 dk
Malzeme7 çeşit
gpiozeroGPIO çıkışıBCM numaralandırmawhile döngüsüPWMLEDThonny

Proje hakkında

Raspberry Pi'nin kenarındaki 40 pinlik başlık, kartın dış dünyayla konuştuğu kapıdır. Bu pinlerin çoğu GPIO (genel amaçlı giriş/çıkış) pinidir ve Python koduyla 3,3V (açık) veya 0V (kapalı) yapılabilir. Bu projede tek bir LED ile bu kapıyı ilk kez açacağız.

Arduino'dan farklı olarak burada derleme veya karta yükleme adımı yoktur. Kodu Raspberry Pi'nin kendi üzerinde yazar, kaydeder ve anında çalıştırırsınız. Python'un okunaklı yapısı ve gpiozero kütüphanesinin sade komutları sayesinde ilk programınız sadece birkaç satır olacak.

  • Raspberry Pi GPIO pinlerini ve 3,3V mantık seviyesini
  • BCM (GPIO) ve fiziksel pin numaraları arasındaki farkı
  • gpiozero ile LED nesnesi oluşturmayı
  • Yazılımsal PWM ile parlaklık kontrolünü

Malzeme listesi

Projeyi tamamlamak için aşağıdaki 7 çeşit malzemeye ihtiyacınız var. Raspberry Pi'niz hazırsa geri kalan parçaların çoğu elektronik başlangıç setlerinde bulunur.

Raspberry Pi 4 veya 5 1 adet

Raspberry Pi OS (Bookworm veya üstü) kurulu olmalı. Pi 3B+ ile de çalışır.

microSD kart 1 adet

En az 16 GB, Raspberry Pi OS yüklü.

Resmi güç adaptörü 1 adet

Pi 5 için 5V 5A USB-C, Pi 4 için 5V 3A USB-C.

Breadboard 1 adet

Yarım boy (400 delik) yeterlidir.

5 mm LED 1 adet

Herhangi bir renk. Uzun bacak (+) anot, kısa bacak (−) katottur.

330 Ω direnç 1 adet

Renk kodu: turuncu-turuncu-kahverengi.

Jumper kablo (dişi-erkek) 2 adet

Devre bağlantıları

Bağlantıları Raspberry Pi kapalıyken ve güç kablosu çıkarılmışken yapın. Her satırda önce GPIO (BCM) numarası, ardından kart üzerindeki fiziksel pin numarası yazar; çizgi rengi önerilen kablo rengidir.

LED anot (+, uzun bacak)GPIO17 · pin 11330 Ω direnç üzerinden
LED katot (−, kısa bacak)GND · pin 9Herhangi bir GND pini olabilir
Pin 1, kartın köşesine en yakın olan ve genellikle kare lehim pedine sahip pindir. Tek numaralı pinler kartın iç tarafındaki sırada, çift numaralılar kenar tarafındaki sıradadır. Terminale pinout yazarak kartınızın pin haritasını ekranda görebilirsiniz.

Adım adım kurulum

  1. Raspberry Pi'yi kapatın

    Masaüstündeki menüden Kapat'ı seçin veya terminale sudo shutdown now yazın. Yeşil ışık sönünce güç kablosunu çıkarın. Bağlantıları her zaman güç yokken yapın.

  2. LED'i breadboard'a takın

    LED'in uzun ve kısa bacaklarını iki ayrı sütuna yerleştirin. Uzun bacağın sütununa 330 Ω direncin bir ucunu takın.

  3. GPIO17'ye bağlayın

    Dişi-erkek bir kabloyla direncin boştaki ucunu Raspberry Pi'nin 11 numaralı fiziksel pinine (GPIO17) bağlayın.

  4. GND'ye bağlayın

    İkinci kabloyla LED'in kısa bacağını 9 numaralı pine (GND) bağlayın.

  5. Pi'yi açın ve Thonny'yi başlatın

    Güç kablosunu takın. Masaüstü açılınca Menü › Programlama › Thonny yolunu izleyin.

  6. Kodu yazıp çalıştırın

    Aşağıdaki ilk kodu yapıştırın, led_blink.py adıyla kaydedin ve yeşil Run düğmesine basın. LED saniyede bir yanıp sönmeli.

  7. Programı durdurun

    Thonny'de kırmızı Stop düğmesine basın ya da terminalde çalıştırıyorsanız Ctrl+C tuşlarına basın.

Python kodu

Kodları Thonny editörüne yapıştırıp .py uzantısıyla kaydedin ve Run düğmesine basın ya da terminalden python3 dosya_adi.py komutuyla çalıştırın. Programı durdurmak için Ctrl+C tuşlarını kullanın.

LED'i saniyede bir yakıp söndüren temel kod.

led_blink.pyPython
# Raspberry Pi ile LED Yakıp Söndürme
# RobotikHocasi.com

from gpiozero import LED
from time import sleep

led = LED(17)          # GPIO17 = fiziksel pin 11

while True:            # Sonsuz döngü
    led.on()
    print("LED yandi")
    sleep(1)           # 1 saniye bekle

    led.off()
    print("LED sondu")
    sleep(1)

Bonus: LED'in yavaşça parlayıp söndüğü nefes efekti.

led_nefes.pyPython
# PWMLED ile nefes efekti
from gpiozero import PWMLED
from signal import pause

led = PWMLED(17)

# 1 saniyede parla, 1 saniyede sön; arka planda sürekli tekrar eder
led.pulse(fade_in_time=1, fade_out_time=1)

print("Nefes efekti calisiyor. Durdurmak icin Ctrl+C")
pause()                # Programın kapanmasını engeller

Kodu Thonny yerine terminalden çalıştırmak için.

terminalTerminal
# Kodun bulunduğu klasöre gidin ve çalıştırın
cd ~/Desktop
python3 led_blink.py

# Durdurmak için: Ctrl + C

Kod açıklaması

from gpiozero import LED

gpiozero kütüphanesinden LED sınıfını alır. Kütüphane Raspberry Pi OS ile hazır gelir; ayrıca kurulum gerekmez.

led = LED(17)

GPIO17 pinine bağlı bir LED nesnesi oluşturur. Buradaki 17 fiziksel pin numarası değil, BCM (GPIO) numarasıdır.

while True:

Koşulu her zaman doğru olan sonsuz döngü. Python'da döngünün içindeki satırlar girintiyle (4 boşluk) belirtilir.

sleep(1)

Programı 1 saniye bekletir. 0.5 yazarak yarım saniye de bekleyebilirsiniz.

led.pulse(fade_in_time=1, fade_out_time=1)

LED'i arka planda sürekli parlatıp söndürür. Bu sırada ana program başka işler yapabilir.

pause()

Programın sonuna gelip kapanmasını engeller; arka plandaki pulse efektinin sürmesini sağlar.

Nasıl çalışır?

led.on() komutu GPIO17 pinini 3,3V yapar. Akım pinden çıkar, 330 Ω direnç ve LED üzerinden GND'ye ulaşır. Kırmızı bir LED yaklaşık 2V düşürdüğü için dirençte kalan gerilim 1,3V'tur; akım ise 1,3 / 330 ≈ 4 mA olur. Bu değer hem LED'i görünür şekilde yakar hem de Raspberry Pi'nin pinini zorlamaz.

Raspberry Pi'nin GPIO pinlerinde gerçek analog çıkış yoktur. PWMLED, pini saniyede yüzlerce kez açıp kapatarak (yazılımsal PWM) ortalama bir parlaklık oluşturur. Linux aynı anda pek çok işi yönettiği için bu yazılımsal PWM, Arduino'daki kadar kararlı değildir; LED'de hafif titreme görürseniz normaldir.

Sorun giderme

LED hiç yanmıyor
LED'in yönünü kontrol edin: uzun bacak direnç tarafına gelmeli. Kablonun gerçekten fiziksel 11 numaralı pine takılı olduğunu, kodda ise 17 yazdığını doğrulayın.
GPIO busy veya pin already in use hatası
Aynı pini kullanan başka bir program hâlâ çalışıyor. Thonny'de Stop'a basın veya açık terminal pencerelerindeki programları Ctrl+C ile kapatın.
ModuleNotFoundError: No module named gpiozero
Raspberry Pi OS Lite kullanıyorsanız kütüphane eksik olabilir: sudo apt install python3-gpiozero komutuyla kurun.
IndentationError hatası
Python'da girintiler önemlidir. while döngüsünün içindeki tüm satırlar aynı miktarda (4 boşluk) içeride olmalıdır.

Geliştirme fikirleri

Projeyi tamamladıysanız, aşağıdaki fikirlerle bir adım öteye taşıyabilirsiniz.

SOS mors kodu

Kısa ve uzun yanışlarla ··· ––– ··· sinyalini gönderen bir program yazın.

Terminalden kontrol

input() ile kullanıcıdan "ac" veya "kapa" komutu alıp LED'i yönetin.

LEDBoard ile ışık şovu

5 LED bağlayıp LEDBoard sınıfıyla yürüyen ışık efekti oluşturun.

Açılışta otomatik çalışma

Programı Pi açıldığında otomatik başlatmak için bir systemd servisi oluşturun.

Sık sorulan sorular

Neden Arduino'daki gibi 220 Ω değil de 330 Ω?
Raspberry Pi pinleri 3,3V verir ve pin başına akımın düşük tutulması önerilir. 330 Ω ile akım 4 mA civarında kalır. 220 Ω da güvenli çalışır, LED biraz daha parlak yanar.
Raspberry Pi açıkken kablo takabilir miyim?
Teknik olarak mümkün olsa da yanlışlıkla 5V ile bir GPIO pinine dokunmak kartı kalıcı olarak bozabilir. Bağlantıları her zaman güç kapalıyken yapmak en güvenli alışkanlıktır.
RPi.GPIO kütüphanesini kullanabilir miyim?
Eski projelerde sık görülür, ancak Raspberry Pi 5'te çalışmaz. Yeni projelerde gpiozero kullanmanızı öneririz; tüm modellerde aynı kod çalışır.

Bir sonraki projeye hazır mısınız?

Raspberry Pi serisindeki 5 projeyi tamamladığınızda GPIO, kamera, sensör verisi ve web sunucusu ile çalışmanın temellerini öğrenmiş olursunuz.

Raspberry Pi projelerine dön