Raspberry Pi 5 GPIO'yu Python 3 ile Kontrol Etme - Dünyadan Güncel Teknoloji Haberleri

Raspberry Pi 5 GPIO'yu Python 3 ile Kontrol Etme - Dünyadan Güncel Teknoloji Haberleri
set_value(0) finally: led_line LED’i çıkış olarak ayarlayın LINE_REQ_DIR_OUT) button_line İkincisi, koda bir duraklama eklemek için kullanılan zamandır Kodun ana gövdesini try ve while True döngüsüne sarın Thonny’yi açın ve iki kod modülünü içe aktarın LED’i açmak için düğmeye basın ve kapatmak için bırakın

(Resim kredisi: Gelecek)

Devre son derece basittir Direnç 100 ila 330 Ohm (Turuncu-Turuncu-Kahverengi-Altın) arasında herhangi bir değer olabilir

chip = gpiod

Bu projeler için ihtiyacınız olacak

(İmaj kredisi: Tom’un Donanımı)

Herhangi bir dili/çerçeveyi öğrenirken ilk hedef bir “Merhaba Dünya” programı oluşturmaktır Chip('gpiochip4')

4

led_line = chip get_line(LED_PIN) button_line = chip LED_PIN adında bir değişken oluşturun ve 17 değerini bunun içinde saklayın

Proje 1: Tam Kod Listeleme

import gpiod import time LED_PIN = 17 chip = gpiod get_line(BUTTON_PIN) led_line sleep(1) # Sleep for one second

9

finally: led_line release()

14 GPIO’ya benzer bir his veriyor LED’i çıkış olarak ayarlayın GPIO gibi Python modülleriyle kullanabiliyorduk request(consumer="Button", type=gpiod sleep(1) led_line Akımın LED’e akmasını istiyoruz Bu örnekte bir buton oluşturuyoruz, bir tarafı Button GPIO pinine, diğer tarafı 3V3’e bağlı İkincisi, LED’in açılıp kapanmasını tetikleyecek bir düğme olan bir giriştir

Gpiod’u kullanarak çok basit iki proje oluşturacağız LED’i kapatın ve ardından bir saniye bekleyin Gpiod’u Python ve GPIO için daha çok bir ara modül olarak görüyoruz Kodu Blinky set_value(0) time Button_line adında bir değişken oluşturun ve Button GPIO pinine bir referans kaydedin get_value()

11 sleep(1) finally: led_line

import gpiod import time

2 Uyku, LED’i bir saniye boyunca kapalı kalmaya zorlar Gpiod modülü, GPIO pinlerine atıfta bulunmak için çizgiler kullanır Bizim göz atın direnç referans kılavuzu daha fazla bilgi için Kullanmadan önce GPIO pinlerini açıkça ayarlamamız gerektiğinden RPI Kısa bacak (katot), bir direnç ve başka bir atlama kablosu aracılığıyla GND’ye bağlanır

button_line Button GPIO pininin varsayılan durumu güç yok (0, Yanlış, Düşük) ancak düğmeye bastığımızda 3V3 pinini Button GPIO pinine bağlayıp durumunu güç (1, Doğru, Yüksek) olarak değiştiriyoruz Kod çıktığında GPIO’yu temizlemek için bir kod bölümü ekleyin

led_line

try: while True:

7

Proje 2: Tam Kod Listeleme

import gpiod LED_PIN = 17 BUTTON_PIN = 27 chip = gpiod Raspberry Pi 5 ve RP1 çipi ile artık dinamik olarak bölünmüş cihazlarımız var ve GPIO’muz gpiomem4’te Bu, Düğme pimini yükseğe çeker (1, Doğru) Gpiod modülü, GPIO pinlerine atıfta bulunmak için çizgiler kullanır

LED_PIN = 17

3 Chip('gpiochip4') led_line = chip Düğmeye basılmadığında LED’i kapatmak için başka bir koşul kullanın GPIO 17’deki LED her saniye yanıp sönecektir Try, kodumuzu çalıştırmayı deneyecek istisna işleyicinin bir parçasıdır, istisnaları işleyebilir ve çıktığımızda kodun bir bölümünü çalıştırabilir Bu durum değişikliği kodumuzun tetikleyicisidir get_line(LED_PIN)

5

button_line = chip set_value(1) # Turn the LED on

12

BUTTON_PIN = 27

4 get_line(BUTTON_PIN)

7 LINE_REQ_DIR_OUT) try: while True: led_line release()

Proje 2: Girdi, Kullanıcı Girdisine Tepki Verme

(İmaj kredisi: Tom’un Donanımı)

“Merhaba Dünya”dan sonraki hedef bir girdi oluşturmaktır Akımın LED’e akmasını istiyoruz get_value() if button_state == 1: led_line

led_line Başlangıçta Raspberry Pi’nin belleğe eşlenen tek bir gpiomem cihazı vardı ve bunu RPi set_value(1) else: led_line GPIO’yu kullanamıyoruz Button GPIO pininin varsayılan durumu düşük (0, Yanlış) olacaktır release() button_line

led_line LINE_REQ_DIR_OUT)

8

finally: led_line GPIO Zero ile bunu yapmak zorunda değiliz ancak gpiod’u (ve eski RPi

1

Hala aynı 40 pinli GPIO’ya sahibiz ancak yeni RP1 güney köprüsü çipine bağlı olduğu için artık biraz farklı çalışıyor Düğmeye basılıp basılmadığını kontrol etmek için if koşulunu kullanın

button_state = button_line Birincisi bir çıkış, bir LED release() Sonlandırmak için CTRL + C tuşlarına basın veya Durdur’a tıklayın Try, kodumuzu çalıştırmayı deneyecek istisna işleyicinin bir parçasıdır, istisnaları işleyebilir ve çıktığımızda kodun bir bölümünü çalıştırabilir Chip('gpiochip4') led_line = chip Fakat butona bastığımızda Raspberry Pi 5’in 3V pinini Button GPIO pinine bağlıyoruz Thonny’yi açın ve iki kod modülünü içe aktarın py olarak kaydedin ve başlamak için Çalıştır’a tıklayın Broadcom pin referansları, tüm Raspberry Pi belgelerinde kullanılan standarttır Akımın LED’e akmasını istiyoruz Bu değişken, Raspberry Pi’nin tüm modellerindeki GPIO pini için Broadcom pin referansını içerir request(consumer="LED", type=gpiod İlk modül GPIO’yu kontrol etmek ve okumak için kullanılan gpiod’dur LINE_REQ_DIR_OUT)

6

import gpiod import time

2

(Resim kredisi: Gelecek)

1 LINE_REQ_DIR_IN)

9 request(consumer="LED", type=gpiod Koda GPIO’yu nerede bulacağınızı söyleyin İlk modül GPIO’yu kontrol etmek ve okumak için kullanılan gpiod’dur SoC’den GPIO’ya geçişi kullanır Donanım, bilgisayar korsanlığı ve elektronikte bu, yanıp sönen bir LED’dir get_line(LED_PIN)

6 Başlangıçta Raspberry Pi’nin belleğe eşlenen tek bir gpiomem cihazı vardı ve bunu RPi

chip = gpiod Kod çıktığında GPIO’yu temizlemek için bir kod bölümü ekleyin LED’i çevirin ve ardından bir saniye bekleyin Button GPIO pininin mevcut durumunu alın ve onu Button_state adlı bir değişkende saklayın Bir atlama teli kullanarak GPIO 17’ye bağlanan bir LED’in uzun ayağına (anot) sahibiz py olarak kaydedin ve başlamak için Çalıştır’a tıklayın Broadcom pin referansları, tüm Raspberry Pi belgelerinde kullanılan standarttır Kodun ana gövdesini try ve while True döngüsüne sarın set_value(0) time Geçmişte birçok proje RPi GPIO’yu) çıkmadan önce temizlememiz gerekiyor GPIO’yu tercih ediyordu BUTTON_PIN adında bir değişken oluşturun ve 27 değerini bunun içinde saklayın Bu değişken, Raspberry Pi’nin tüm modellerindeki GPIO pini için Broadcom pin referansını içerir SoC’den GPIO’ya geçişi kullanır Bu neden önemli? Her şey GPIO ile etkileşime giren kodu nasıl yazdığımıza bağlı Koda GPIO’yu nerede bulacağınızı söyleyin

LED_PIN = 17

3

try: while True:

10 Bu, LED’in bir saniye boyunca açık kalmasını zorlayacaktır Bu bizi bir alternatif kullanmaya zorluyor ve libgpiod bunun nasıl yapılacağı konusunun odak noktası

Libgpiod, özellikle python3-gpiod GPIO ile etkileşime geçmek için saf bir Python modülüdür set_value(1) time Eğer öyleyse, LED’i açın

led_line Bize pek mantıklı gelmeyebilir ama panoları oluşturan mühendislere göre pinler doğru şekilde kırılmış Bu, Ben Croston’un bir topluluk projesiydi ve birçok nesil Raspberry Pi’ye iyi bir şekilde hizmet etti request(consumer="LED", type=gpiod sleep(1)

8 Kodumuz bu durum değişikliğini arayacak ve buna göre tepki verecektir led_line adında bir değişken oluşturun ve LED GPIO pinine bir referans saklayın Bize pek mantıklı gelmeyebilir ama panoları oluşturan mühendislere göre pinler doğru şekilde kırılmış Sonlandırmak için CTRL + C tuşlarına basın veya Durdur’a tıklayın

led_line = chip GPIO gibi Python modülleriyle kullanabiliyorduk set_value(0) # Turn the LED off

13 release()

10 Chip('gpiochip4')

5

else: led_line request(consumer="LED", type=gpiod led_line adında bir değişken oluşturun ve LED GPIO pinine bir referans saklayın LED_PIN adında bir değişken oluşturun ve 17 değerini bunun içinde saklayın release() button_line get_line(LED_PIN) led_line set_value(1) time GPIO 27, GPIO 17’nin hemen yanındadır Düğmeyi giriş olarak ayarlayın Kodu Button-press

Ahududu Pi 5 yeni piyasaya sürüldü ve bizi daha güçlü bir Pi ile tanıştırdı, ancak aynı zamanda birkaç şeyi de değiştirdi ve en önemlisi GPIO’ydu Raspberry Pi 5’te GPIO pinlerinin hafıza eşlemesi nedeniyle RPi GPIO Zero, Ben Nuttall ve Dave Jones tarafından oluşturuldu ve GPIO’yu büyük ölçüde basitleştiriyor request(consumer="Button", type=gpiod GPIO’yu) çıkmadan önce temizlememiz gerekiyor

if button_state == 1: # Button is pressed led_line İkincisi, koda bir duraklama eklemek için kullanılan zamandır Raspberry Pi 5 ve RP1 çipi ile artık dinamik olarak bölünmüş cihazlarımız var ve GPIO’muz gpiomem4’te Bu konuda yeniyseniz, şunu kullanın: GPIO Sıfır Raspberry Pi 5 ile de çalışır Tek ihtiyacımız olan düğme ve iki aktarma kablosu GPIO Zero ile bunu yapmak zorunda değiliz ancak gpiod’u (ve eski RPi LINE_REQ_DIR_IN) try: while True: button_state = button_line