GPIO pinlerini neden temizlemelisiniz?


13

Python'da bir program çalıştırırken, GPIO'ları kullanırken neden temizleme komutunu isteyeyim?


Bir yan not olarak, C programlarıyla kullanılan wiringPi kütüphanesinin bir Cleanup()işlevi yoktur. GPIO.cleanup()python işlevselliği bu değişiklikleri temizlemek için bir değişiklik günlüğü tuttuğu için kullanılabilir olduğu anlaşılıyor . Bkz. Raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers

Yanıtlar:


14

Bu makalede belirtildiği gibi RPi.GPIO temel bilgileri 3 - GPIO programlarından temiz bir şekilde çıkma, uyarılardan kaçınma ve Pi'nizi koruma , GPIO.cleanup () kullanımını doğru kullanma,

GPIO.cleanup () yönteminin doğru kullanımı

RPi.GPIO, kullandığınız tüm bağlantı noktalarını temizlemek için yerleşik bir GPIO.cleanup () işlevi sağlar. Ama bunun ne yaptığını çok açık olun. Yalnızca geçerli programda ayarladığınız bağlantı noktalarını etkiler. Bu programda kullandığınız portları giriş moduna sıfırlar. Bu, örneğin, çıkış olarak YÜKSEK olarak ayarlanmış bir bağlantı noktasına sahip olduğunuz ve yanlışlıkla bağlantı noktasını kısa devre yapacak ve muhtemelen kızartacak olan GND'ye (DÜŞÜK) bağladığınız bir durumun zarar görmesini önler. Girişler 0V (DÜŞÜK) veya 3,3V (YÜKSEK) işleyebilir, bu nedenle bağlantı noktalarını giriş olarak bırakmak daha güvenlidir.

Umarım şüpheni temizler.


5

Temizleme yöntemini kullanmanız gerekmez.

Bildiğim kadarıyla sadece RPi.GPIO ve RPIO.GPIO Python modüllerinin bir temizleme yöntemi var. Temizleme yöntemi, önceden kullandığınız tüm gpios'ları giriş olarak ayarlar ve bu gpioslar için dahili pull-up'ları / çıkışları devre dışı bırakır.

Benim pigpio Python modülümün temizleme yöntemi yok, bildiğim kadarıyla wiringPi2 Python modülü de yok.


O zaman temizleme komutunun amacı nedir?
İnsan

1
@İnsan Bir amaç olduğunu düşünmüyorum, eğer gerekli olduğunu düşünürsem böyle bir yöntem eklerdim. dastaan ​​cevabında RPi.GPIO yazarı tarafından kullanılan gerekçeye dikkat çekti. Daha çok felsefi bir bükülme olabilir, kullanıcıların yaptıklarını veya yapmadıklarını yapmak için bir nedenleri olduğunu varsayıyorum. Program bittikten sonra bir gpio'yu girdi olarak bırakmak istiyorlarsa girdi olarak ayarlamalıdırlar.
joan

1

Özellikle önceki bir oturumda ayarlanmış modları ve pin yönlerini değiştirmeye çalışmakla ilgili olarak GPIO'yu kullanırken birkaç sorunla karşılaştım. Örneğin, bazen pinleri çıkışa ayarlayan bir program çalıştırırsam ve daha sonra pi'yi yeniden başlatmadan girişe aynı pinleri ayarlayan bir program çalıştırırsam, bir sürü uyarı alırım (örneğin "RunTimeWarning: Bu kanal zaten ) "kullanın. Bu, özellikle program çöktüğü için, GPIO ile ilgili çeşitli işlevleri tek bir programdan çağırırken özellikle sorunludur.

Temizleme komutunu GPIO ayarlarını değiştirmeden önce veya sonra kullanmak uyarılardan kurtulur ve GPIO ayarları uyarıları olmadan kodun sorunsuz bir şekilde çalışmasını sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.