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