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
Gpiod modülü, GPIO pinlerine atıfta bulunmak için çizgiler kullanır LINE_REQ_DIR_OUT)

6 release()

14 LINE_REQ_DIR_OUT) button_line Direnç 100 ila 330 Ohm (Turuncu-Turuncu-Kahverengi-Altın) arasında herhangi bir değer olabilir Bu neden önemli? Her şey GPIO ile etkileşime giren kodu nasıl yazdığımıza bağlı Gpiod’u Python ve GPIO için daha çok bir ara modül olarak görüyoruz Button GPIO pininin mevcut durumunu alın ve onu Button_state adlı bir değişkende saklayın

Proje 2: Tam Kod Listeleme

import gpiod LED_PIN = 17 BUTTON_PIN = 27 chip = gpiod GPIO’yu tercih ediyordu Düğmeye basılıp basılmadığını kontrol etmek için if koşulunu kullanın Chip('gpiochip4') led_line = chip Broadcom pin referansları, tüm Raspberry Pi belgelerinde kullanılan standarttır Raspberry Pi 5 ve RP1 çipi ile artık dinamik olarak bölünmüş cihazlarımız var ve GPIO’muz gpiomem4’te

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

if button_state == 1: # Button is pressed led_line request(consumer="LED", type=gpiod Bu değişken, Raspberry Pi’nin tüm modellerindeki GPIO pini için Broadcom pin referansını içerir release() button_line

LED_PIN = 17

3 led_line adında bir değişken oluşturun ve LED GPIO pinine bir referans saklayın release() button_line Chip('gpiochip4')

4 Chip('gpiochip4')

5 set_value(0) # Turn the LED off

13

chip = gpiod Düğmeyi giriş olarak ayarlayın Düğmeye basılmadığında LED’i kapatmak için başka bir koşul kullanın Chip('gpiochip4') led_line = chip

button_line Koda GPIO’yu nerede bulacağınızı söyleyin 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 sleep(1) # Sleep for one second

9 SoC’den GPIO’ya geçişi kullanır İkincisi, koda bir duraklama eklemek için kullanılan zamandır py olarak kaydedin ve başlamak için Çalıştır’a tıklayın Kodun ana gövdesini try ve while True döngüsüne sarı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 Akımın LED’e akmasını istiyoruz BUTTON_PIN adında bir değişken oluşturun ve 27 değerini bunun içinde saklayın GPIO 27, GPIO 17’nin hemen yanındadır Bu değişken, Raspberry Pi’nin tüm modellerindeki GPIO pini için Broadcom pin referansını içerir 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 get_value() if button_state == 1: led_line Bizim göz atın direnç referans kılavuzu daha fazla bilgi için Başlangıçta Raspberry Pi’nin belleğe eşlenen tek bir gpiomem cihazı vardı ve bunu RPi sleep(1) finally: led_line Kod çıktığında GPIO’yu temizlemek için bir kod bölümü ekleyin İkincisi, koda bir duraklama eklemek için kullanılan zamandır Başlangıçta Raspberry Pi’nin belleğe eşlenen tek bir gpiomem cihazı vardı ve bunu RPi get_line(LED_PIN)

5 Bu konuda yeniyseniz, şunu kullanın: GPIO Sıfır Raspberry Pi 5 ile de çalışır

finally: led_line Bu, LED’in bir saniye boyunca açık kalmasını zorlayacaktır

import gpiod import time

2 Kodun ana gövdesini try ve while True döngüsüne sarın set_value(1) # Turn the LED on

12 Kod çıktığında GPIO’yu temizlemek için bir kod bölümü ekleyin LED’i çıkış olarak ayarlayın set_value(1) else: led_line Kodu Blinky

led_line

LED_PIN = 17

3 Uyku, LED’i bir saniye boyunca kapalı kalmaya zorlar SoC’den GPIO’ya geçişi kullanır GPIO 17’deki LED her saniye yanıp sönecektir Bu durum değişikliği kodumuzun tetikleyicisidir Bize pek mantıklı gelmeyebilir ama panoları oluşturan mühendislere göre pinler doğru şekilde kırılmış

led_line Gpiod modülü, GPIO pinlerine atıfta bulunmak için çizgiler kullanır Fakat butona bastığımızda Raspberry Pi 5’in 3V pinini Button GPIO pinine bağlıyoruz get_line(LED_PIN) led_line Button GPIO pininin varsayılan durumu düşük (0, Yanlış) olacaktır Button_line adında bir değişken oluşturun ve Button GPIO pinine bir referans kaydedin request(consumer="LED", type=gpiod release()

10 GPIO Zero ile bunu yapmak zorunda değiliz ancak gpiod’u (ve eski RPi Kısa bacak (katot), bir direnç ve başka bir atlama kablosu aracılığıyla GND’ye bağlanır

led_line GPIO gibi Python modülleriyle kullanabiliyorduk LED’i açmak için düğmeye basın ve kapatmak için bırakın

(Resim kredisi: Gelecek)

Devre son derece basittir Koda GPIO’yu nerede bulacağınızı söyleyin

led_line Bu, Düğme pimini yükseğe çeker (1, Doğru) Kullanmadan önce GPIO pinlerini açıkça ayarlamamız gerektiğinden RPI set_value(0) time GPIO Zero ile bunu yapmak zorunda değiliz ancak gpiod’u (ve eski RPi set_value(0) finally: led_line LED_PIN adında bir değişken oluşturun ve 17 değerini bunun içinde saklayın LINE_REQ_DIR_IN)

9 GPIO’yu) çıkmadan önce temizlememiz gerekiyor get_line(BUTTON_PIN) led_line sleep(1) led_line Broadcom pin referansları, tüm Raspberry Pi belgelerinde kullanılan standarttır LED’i çıkış olarak ayarlayın Eğer öyleyse, LED’i açın

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

try: while True:

7

led_line = chip

try: while True:

10 Bu bizi bir alternatif kullanmaya zorluyor ve libgpiod bunun nasıl yapılacağı konusunun odak noktası LINE_REQ_DIR_OUT) try: while True: led_line request(consumer="Button", type=gpiod Bize pek mantıklı gelmeyebilir ama panoları oluşturan mühendislere göre pinler doğru şekilde kırılmış Geçmişte birçok proje RPi Birincisi bir çıkış, bir LED Sonlandırmak için CTRL + C tuşlarına basın veya Durdur’a tıklayın get_line(LED_PIN)

6

button_line = chip LED_PIN adında bir değişken oluşturun ve 17 değerini bunun içinde saklayın GPIO’ya benzer bir his veriyor İlk modül GPIO’yu kontrol etmek ve okumak için kullanılan gpiod’dur

(Resim kredisi: Gelecek)

1

Gpiod’u kullanarak çok basit iki proje oluşturacağız Tek ihtiyacımız olan düğme ve iki aktarma kablosu set_value(1) time LINE_REQ_DIR_OUT)

8 LED’i kapatın ve ardından bir saniye bekleyin

chip = gpiod İkincisi, LED’in açılıp kapanmasını tetikleyecek bir düğme olan bir giriştir GPIO gibi Python modülleriyle kullanabiliyorduk İlk modül GPIO’yu kontrol etmek ve okumak için kullanılan gpiod’dur get_line(LED_PIN) button_line = chip

finally: led_line

Proje 1: Tam Kod Listeleme

import gpiod import time LED_PIN = 17 chip = gpiod

led_line = chip LINE_REQ_DIR_IN) try: while True: button_state = button_line Kodumuz bu durum değişikliğini arayacak ve buna göre tepki verecektir Bu, Ben Croston’un bir topluluk projesiydi ve birçok nesil Raspberry Pi’ye iyi bir şekilde hizmet etti request(consumer="Button", type=gpiod Raspberry Pi 5’te GPIO pinlerinin hafıza eşlemesi nedeniyle RPi set_value(0) time request(consumer="LED", type=gpiod Thonny’yi açın ve iki kod modülünü içe aktarın LED’i çevirin ve ardından bir saniye bekleyin Bir atlama teli kullanarak GPIO 17’ye bağlanan bir LED’in uzun ayağına (anot) sahibiz Kodu Button-press Raspberry Pi 5 ve RP1 çipi ile artık dinamik olarak bölünmüş cihazlarımız var ve GPIO’muz gpiomem4’te request(consumer="LED", type=gpiod

Libgpiod, özellikle python3-gpiod GPIO ile etkileşime geçmek için saf bir Python modülüdür sleep(1)

8

import gpiod import time

2 Donanım, bilgisayar korsanlığı ve elektronikte bu, yanıp sönen bir LED’dir 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ı release() get_value()

11 Thonny’yi açın ve iki kod modülünü içe aktarın

button_state = button_line

1 Sonlandırmak için CTRL + C tuşlarına basın veya Durdur’a tıklayın get_line(BUTTON_PIN)

7 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 py olarak kaydedin ve başlamak için Çalıştır’a tıklayın GPIO’yu kullanamıyoruz Akımın LED’e akmasını istiyoruz

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 led_line adında bir değişken oluşturun ve LED GPIO pinine bir referans saklayın

BUTTON_PIN = 27

4 GPIO Zero, Ben Nuttall ve Dave Jones tarafından oluşturuldu ve GPIO’yu büyük ölçüde basitleştiriyor set_value(1) time

else: led_line GPIO’yu) çıkmadan önce temizlememiz gerekiyor