2016-03-29 19 views
0

gpio 4'e basıldığında posta gönderme kodunu içeren python komut dosyası mail.py oluşturdum..my gpio 4 PULLED UP anahtarıdır, ancak sorun şu ki doğrudan Çalıştırdığı komut dosyasını çalıştırın, posta göndereceği anlamına gelir, ancak bu anahtara bastığımda, geçiş düğmesine basmadan önce çalışmaz, döngü dışında çalışır ve komut dosyası çalışmaz, e-posta da göndermez ... ayrıca bunun için gecikme de koydu ..i düşünmek bir kez bu düğmeye basın zaman bir kez bu 10 saniye sonra devlet durumunu okumak gerekir ama devlet anahtarını depolayamıyorum anahtarı herhangi bir öneri plz söyle ... peşin ..Raspberry pi: PULLED UP anahtarına basıldığında e-posta gönder

cevap

1

Yapmaya çalıştığınız şeyi anladığımdan emin değilim, fakat bana öyle geliyor ki bu komut, düğmeye basılana kadar çalışır ve bir kere mi Ancak

try: 
    GPIO.wait_for_edge(4, GPIO.FALLING) 
    # Create email 
    ... 
except KeyboardInterrupt: 
    GPIO.cleanup() 
GPIO.cleanup() 

, bir postaya düğmeye basıldığında her seferinde göndermek isteyebilirsiniz: GPIO.wait_for_edge(4, GPIO.FALLING) hattı boyunca

şey gibi, kodunuzda sığacak en kolay olurdu nedir? Eğer öyleyse, GPIO.add_event_detect'i kullanarak bir geri çağırma işlevini kullanmak daha da iyidir. Bu durumda bu daha uygundur: RPi.GPIO girişi ilgili ayrıntılı bilgi için

# Create and send mail 
def send_mail(): 
    ... 

# add rising edge detection on a channel, ignoring further edges 
# for 200ms for switch bounce handling 
GPIO.add_event_detect(channel, GPIO.FALLING, callback = send_mail, bouncetime = 200) 

bakınız: Eğer fonksiyonu olarak bir döngü içine dinleyici ve ayrıca posta işlevselliği yazabilir https://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/

+0

u teşekkür örnek deneyin ama bu benim işime değildir ... plz 0'a gider bastığınızda benim anahtarı 1 bydefult olduğunu ... bana başka bir çözüm vermek devlet ... ... devleti kurtaracak çözüm nedir ... ... tam olarak kodda yazmam gerekenleri tam olarak verebilsin. –

+0

Örneğime ve dahil ettiğim bağlantıya dayanarak, özel ihtiyaçlarınız için uygun bir çözüm bulabiliyor olmalısınız. Eğer durumu kaydetmek istiyorsanız, RISING ve DAHA FAZLAMA olaylarını dinleyerek girişi takip etmek isteyebilirsiniz. – Elijan9

+0

teşekkür u..i linke başvurdu ... ve ne dediğimi anladım .. ama bu benim problemim değil ... benim durumumda bir kez basıldığında, bu bir süre sonra sürekli basmıyor. anahtara bile tek bir kez basılmamış olduğunu anlayacaktır ... bu yüzden ben bu kadar kayıtlı posta o kadar basit ki, bu serbest bırakılan anahtarı yok olmalıdır kaydedilen durumdan bu yana düğmeye bastıktan sonra geçiş durumunu kaydetmek gerekir Basılmış anahtar durumunda etki yapmak zorunda. –

0

GPIO.setup (23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

GPIO.setup (24, GPIO.IN, pull_up_down = GPIO

benzeri yer alır. PUD_UP)

Doğru ise:

if (GPIO.input (23) == 1): sonra preslenmiş

# düğmesi işlevini eğer excutting cal mail() fonksiyonu

#After tekrar geri iğne ucu ayarlayabilirsiniz ihtiyaç

0 if (GPIO.input (24) == 0):

baskı (“Düğme 2 basılır”)

GPIO.cleanup()

+0

çok teşekkür ederim ... bu benim için çalışıyor –

+0

Hey, cevabı neden seçmediğinizi bana bildirin. onun için çalışmıyor mu? –

İlgili konular