Python kurulum yazısında Orange pi'de Python konusuna giriş yapmıştık. Bu yazımızda Python dili ile Orange pi'deki giriş çıkış pinlerini(gpio) nasıl programlayacağımızı inceleyeceğiz.
Yükleme işlemleri için komut satırını kullanacağız.
İlk önce güncellemeleri yükleyelim.
Daha sonra gpio pinlerini Python ile kontrol etmek için gerekli olan kütüphaneyi indirelim.
Zero modelleri için;
Diğer modeller için;
Elimizdeki modele göre Python gpio kütüphanesi yükledikten sonra kurulum işlemine yapıyoruz.
Yükleme işlemi bitti fakat Python gpio kodlarını, yapılarını anlamak için indirdiğimiz dizine giderek örnekleri inceleyelim.
"orangepi_PC_gpio_pyH3/examples" dizinine giderek, "blink_led.py" kodunu açıp çalıştıralım. Başlangıçta elinizde elektronik malzemeler olmasa bile, bizim gibi koda birkaç satır ekleyerek durumu terminal üzerinden görebilirsiniz. Buradaki asıl amaç yüklemelerin tam olduğunu ve kodun hata vermediğini test etmek.
Eğer program yukarıdaki gibi çalışıyorsa, artık kendi programımızı yazmak için gerekli kodları, pin diyagramını vs. öğrenebiliriz.
İlk çalıştırdığımız koda bir göz attığımızda init(), setcfg() gibi kodlar olduğunu görüyoruz. Lede bir değer atmak için gpio.output() kodunu görüyoruz. Şimdi indirdiğimiz kütüphane ile hangi yapıları ve kodları kullanabildiğimize bakalım.
Gpio metotları
Yukarıdaki metotların kullanabileceği değerler :
Python gpio kütüphanesi kullanırken gpio pinlerini tanımlarken iki farklı isimlendirme kullanabiliyoruz. Bu isimlendirmeleri "port" ve "connector" modülleri ile birlikte kullanabiliyoruz.
Port isimlendirmesi bizim daha aşina olduğumuz isimlendirme biçimi. Terminalden Python Shell'e girerek bu adlandırmanın nasıl olduğunu görebiliriz.
Port adı ile adlandırmada aşağıdaki pin diyagramını kullanabilirsiniz.
Yukarıdaki pin diyagramına bakarak istediğimiz pini programlayabiliriz. Örneğin;
Yukarıdaki kod "PA6" pinini, yani 7.pini çıkış olarak ayarlar.
Connector isimlendirmesi için de Python Shell'e girerek bu adlandırmanın nasıl olduğunu görebiliriz.
Kullandığımız Python gpio kütüphanesi ilk olarak A-20 OlinuXino-Micro kartının yapısı düşünülerek yazılmıştır. Aşağıdaki resme bakabilirsiniz. Bu yüzden Bağlayıcı(connector)(Pin grubu) adı ile adlandırma, o kartın yapısı düşünüldüğünde kolaylık sağlayabilir. Fakat Orange pi'de pinler tek grupta olduğu için bu adlandırmanın bizim açımızda bir avantajı yok.
Port adı ile adlandırmada aşağıdaki pin diyagramını kullanabilirsiniz.
Orange pi'de tek grup gpio grubu olduğu için, eğer bu isimledirmeyi kullanmak istiyorsan bağlayıcı grup ismini sürekli "gpio1" olarak kullanmak gerekecek. Örneğin;
Yukarıda "gpio1" pin grubunu, "p7" ise 7.pin olduğunu ifade eder. Yukarıdaki kod 7. pini çıkış olarak ayarlar.
Python'da gpio pinlerin kontrol etmemize olanak sağlayan metotları yukarıda açıkladık. Şimdi bunları örnek programlarla açıklayalım.
from time import sleep from pyA20.gpio import gpio from pyA20.gpio import port #gpio islevlerini baslat. gpio.init() #gpio atamasi yap. led = port.PA6 gpio.setcfg(led, gpio.OUTPUT) #ledlerin durumunu ayarla(high/low) while True: gpio.output(led, gpio.HIGH) sleep(1) gpio.output(led,gpio.LOW) sleep(1)
Yukarıda temel bir led programı var. Port numarası ile isimlendirme kullanılmış. Yukarıdaki programda, PA6 portuna bağlı led 1'er saniye aralıkla açık ve kapalı konumda oluyor.
Bağlantı şekli ise aşağıdaki gibidir.
from pyA20.gpio import gpio from pyA20.gpio import port gpio.init() gpio.setcfg(port.PC4, gpio.OUTPUT) gpio.setcfg(port.PC7, gpio.INPUT) gpio.pullup(port.PC7, 0) #Pullup'ları temizler. gpio.pullup(port.PC7, gpio.PULLDOWN) #PC7 pini için Pulldown'u aktif eder. while True: if gpio.input(port.PC7) == 1: gpio.output(port.PC4, gpio.HIGH) else: gpio.output(port.PC4,gpio.LOW)
Yukarıda program ise buton kontrollü bir led programı. Butona bastığımızda led yanıyor. Burada "Pulldown" ve "input" metotlarını kullandık. Pin adlandırılmasında da yine port kütüphanesini kullandık.
Bağlantı şekli ise aşağıdaki gibidir. Neden pull-down drenci kullandığımızı burada açıklamıştık.
Python gpio ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştık. Gerek gördükçe görsellerle bunu destekledik. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizlere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Python ile alakalı sonraki yazılarda Python ile haberleşme portlarının ve sensörlerin kullanımından bahsedeceğiz. Herkese iyi çalışmalar.
Orange Pi ürünleri için yazılı ve görsel dökümanlar hazırlanmaktadır. Tamamlanan dökümanlara "Dökümanlar" sayfasından ulaşabilirsiniz.