9
import gpiod import time2
button_state = button_lineLibgpiod, özellikle python3-gpiod GPIO ile etkileşime geçmek için saf bir Python modülüdür
import gpiod import time2 release()
14 LINE_REQ_DIR_OUT) button_line
Proje 2: Tam Kod Listeleme
import gpiod LED_PIN = 17 BUTTON_PIN = 27 chip = gpiod Chip('gpiochip4')5 Button_line adında bir değişken oluşturun ve Button GPIO pinine bir referans kaydedin LINE_REQ_DIR_OUT)
8
led_line get_line(BUTTON_PIN) led_line LED’i çıkış olarak ayarlayın Kullanmadan önce GPIO pinlerini açıkça ayarlamamız gerektiğinden RPI py olarak kaydedin ve başlamak için Çalıştır’a tıklayın get_value() if button_state == 1: led_line BUTTON_PIN adında bir değişken oluşturun ve 27 değerini bunun içinde saklayın get_line(LED_PIN) button_line = chip SoC’den GPIO’ya geçişi kullanır LED’i kapatın ve ardından bir saniye bekleyin chip = gpiod Kodumuz bu durum değişikliğini arayacak ve buna göre tepki verecektir Uyku, LED’i bir saniye boyunca kapalı kalmaya zorlar GPIO’ya benzer bir his veriyor set_value(0) time SoC’den GPIO’ya geçişi kullanır Bu, LED’in bir saniye boyunca açık kalmasını zorlayacaktır Başlangıçta Raspberry Pi’nin belleğe eşlenen tek bir gpiomem cihazı vardı ve bunu RPi GPIO 27, GPIO 17’nin hemen yanındadır İkincisi, LED’in açılıp kapanmasını tetikleyecek bir düğme olan bir giriştir GPIO gibi Python modülleriyle kullanabiliyorduk Bu durum değişikliği kodumuzun tetikleyicisidir release() button_line Kodu Blinky 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) set_value(0) finally: led_line (Resim kredisi: Gelecek)Devre son derece basittir Sonlandırmak için CTRL + C tuşlarına basın veya Durdur’a tıklayın
finally: led_line Button GPIO pininin varsayılan durumu düşük (0, Yanlış) olacaktır LED_PIN adında bir değişken oluşturun ve 17 değerini bunun içinde saklayın if button_state == 1: # Button is pressed led_line Kodu Button-press Kodun ana gövdesini try ve while True döngüsüne sarın Bize pek mantıklı gelmeyebilir ama panoları oluşturan mühendislere göre pinler doğru şekilde kırılmış Bu bizi bir alternatif kullanmaya zorluyor ve libgpiod bunun nasıl yapılacağı konusunun odak noktası Broadcom pin referansları, tüm Raspberry Pi belgelerinde kullanılan standarttır LINE_REQ_DIR_OUT)6 GPIO’yu) çıkmadan önce temizlememiz gerekiyor Chip('gpiochip4')
4 Tek ihtiyacımız olan düğme ve iki aktarma kablosu Kodun ana gövdesini try ve while True döngüsüne sarın Fakat butona bastığımızda Raspberry Pi 5’in 3V pinini Button GPIO pinine bağlıyoruz Kısa bacak (katot), bir direnç ve başka bir atlama kablosu aracılığıyla GND’ye bağlanır set_value(1) # Turn the LED on
12
led_line = chip led_line Raspberry Pi 5’te GPIO pinlerinin hafıza eşlemesi nedeniyle RPi else: led_line Kod çıktığında GPIO’yu temizlemek için bir kod bölümü ekleyin Broadcom pin referansları, tüm Raspberry Pi belgelerinde kullanılan standarttır (Resim kredisi: Gelecek)1
LED_PIN = 173 get_line(LED_PIN) led_line
Gpiod’u kullanarak çok basit iki proje oluşturacağız
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 request(consumer="LED", type=gpiod py olarak kaydedin ve başlamak için Çalıştır’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 GPIO 17’deki LED her saniye yanıp sönecektir
LED_PIN = 173 Koda GPIO’yu nerede bulacağınızı söyleyin Başlangıçta Raspberry Pi’nin belleğe eşlenen tek bir gpiomem cihazı vardı ve bunu RPi Button GPIO pininin mevcut durumunu alın ve onu Button_state adlı bir değişkende saklayın Bu konuda yeniyseniz, şunu kullanın: GPIO Sıfır Raspberry Pi 5 ile de çalışır Thonny’yi açın ve iki kod modülünü içe aktarın set_value(1) else: led_line request(consumer="LED", type=gpiod
button_line = chipBu projeler için ihtiyacınız olacak
Proje 1: Çıktı, Bir LED’in Yanıp Sönmesi
(İmaj kredisi: Tom’un Donanımı)Herhangi bir dili/çerçeveyi öğrenirken ilk hedef bir “Merhaba Dünya” programı oluşturmaktır GPIO’yu) çıkmadan önce temizlememiz gerekiyor led_line adında bir değişken oluşturun ve LED GPIO pinine bir referans saklayın 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 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 set_value(1) time Eğer öyleyse, LED’i açın
1 Düğmeye basılıp basılmadığını kontrol etmek için if koşulunu kullanın LED’i açmak için düğmeye basın ve kapatmak için bırakın Raspberry Pi 5 ve RP1 çipi ile artık dinamik olarak bölünmüş cihazlarımız var ve GPIO’muz gpiomem4’te 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 GPIO gibi Python modülleriyle kullanabiliyorduk Gpiod modülü, GPIO pinlerine atıfta bulunmak için çizgiler kullanır
try: while True:7
finally: led_line Bu örnekte bir buton oluşturuyoruz, bir tarafı Button GPIO pinine, diğer tarafı 3V3’e bağlı GPIO Zero, Ben Nuttall ve Dave Jones tarafından oluşturuldu ve GPIO’yu büyük ölçüde basitleştiriyor Gpiod modülü, GPIO pinlerine atıfta bulunmak için çizgiler kullanır sleep(1) # Sleep for one second9 Chip('gpiochip4') led_line = chip
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 Bize pek mantıklı gelmeyebilir ama panoları oluşturan mühendislere göre pinler doğru şekilde kırılmış request(consumer="LED", type=gpiod get_value()
11 Düğmeye basılmadığında LED’i kapatmak için başka bir koşul kullanın GPIO’yu tercih ediyordu release() GPIO Zero ile bunu yapmak zorunda değiliz ancak gpiod’u (ve eski RPi Bu, Ben Croston’un bir topluluk projesiydi ve birçok nesil Raspberry Pi’ye iyi bir şekilde hizmet etti Sonlandırmak için CTRL + C tuşlarına basın veya Durdur’a tıklayın Akımın LED’e akmasını istiyoruz Bu neden önemli? Her şey GPIO ile etkileşime giren kodu nasıl yazdığımıza bağlı Kod çıktığında GPIO’yu temizlemek için bir kod bölümü ekleyin Düğmeyi giriş olarak ayarlayın LED’i çevirin ve ardından bir saniye bekleyin Geçmişte birçok proje RPi
Proje 1: Tam Kod Listeleme
import gpiod import time LED_PIN = 17 chip = gpiod Direnç 100 ila 330 Ohm (Turuncu-Turuncu-Kahverengi-Altın) arasında herhangi bir değer olabilir led_line sleep(1) led_line Gpiod’u Python ve GPIO için daha çok bir ara modül olarak görüyoruz button_line sleep(1) finally: led_line GPIO’yu kullanamıyoruz get_line(BUTTON_PIN)7
try: while True:10 GPIO Zero ile bunu yapmak zorunda değiliz ancak gpiod’u (ve eski RPi set_value(0) time LINE_REQ_DIR_OUT) try: while True: led_line Thonny’yi açın ve iki kod modülünü içe aktarın LINE_REQ_DIR_IN) try: while True: button_state = button_line release()
10 Birincisi bir çıkış, bir LED
led_line led_line = chip 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 LED’i çıkış olarak ayarlayın get_line(LED_PIN)5
BUTTON_PIN = 274 release() button_line İlk modül GPIO’yu kontrol etmek ve okumak için kullanılan gpiod’dur request(consumer="Button", type=gpiod Donanım, bilgisayar korsanlığı ve elektronikte bu, yanıp sönen bir LED’dir İkincisi, koda bir duraklama eklemek için kullanılan zamandır Koda GPIO’yu nerede bulacağınızı söyleyin get_line(LED_PIN)
6 Akımın LED’e akmasını istiyoruz Bizim göz atın direnç referans kılavuzu daha fazla bilgi için İlk modül GPIO’yu kontrol etmek ve okumak için kullanılan gpiod’dur set_value(0) # Turn the LED off
13 sleep(1)
8
chip = gpiod set_value(1) time İkincisi, koda bir duraklama eklemek için kullanılan zamandır Bu değişken, Raspberry Pi’nin tüm modellerindeki GPIO pini için Broadcom pin referansını içerir LED_PIN adında bir değişken oluşturun ve 17 değerini bunun içinde saklayın