GPIO aracılığıyla bir düğmeyi nasıl okurum?


15

Kendimi uzun zaman önce bu tür başlangıç ​​seviyesindeki şeylerin dışında gördüm, ama sanırım düşündüğüm kadar akıllı değilim çünkü bununla ilgili olağanüstü bir sorun yaşıyorum!

Sonunda sınavları bitirdim ve yeni oyuncağımla oynayabiliyorum, bu yüzden ilk yaptığım şey UART üzerinde bir LCD karakter ekranı elde etmekti. Bu sorun yok çalışma var, bu yüzden neden bu düğme ile bu kadar zor bir zaman yaşıyorum anlamaya gerçekten zor bir zaman yaşıyorum!

Bu yüzden bir arduino ile olana benzer bir düğme ayarladım; toprağa bağlanan 1k direnç ile. Multimetremi düğmenin çalıştığından ve doğru miktarda güç verdiğinden emin olmak için kullandım. Kabuğuma SSH, düğmeyi GPIO pin 7'ye takın ve python'a girdim. İşte denedim:

GPIO.pinout(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while 1==1:
    inputval = GPIO.input(7)
    print inputval

Bu False, düğmeye nasıl bastığımdan bağımsız olarak bana sonsuz bir döngü kazandırıyor . Ben de denedim GPIO.PUD_UPve Truebunun yerine sonsuz bir döngü var . Ben de denedim GPIO.PUD_OFFve daha var False.

Burada bir şey mi eksik?


Yani GND'ye 1k direnç ile seri olarak geçiş var mı? Bu ile çalışmalı GPIO.PUD_UP. Açıkken GPIO.PUD_UPve düğmeye basıldığında hangi voltajı görüyorsunuz ?
John La Rooy

Biraz karışık; anahtar neye bağlı?
Alex Chamberlain

Merhaba Michael ve Raspberry Pi'ye hoş geldiniz ! İki hesabınızı birleştirme özgürlüğünü aldım. Teşekkürler!

Yanıtlar:


6

GPIO'mda yok pinout, bunu değiştirmek zorunda kaldımsetmode

import time
from RPi import GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
    inputval = GPIO.input(7)
    print inputval
    time.sleep(1)

GPIO.BOARD7 numaralı pimi kullandığınız için etiketli pimdir GPIO 4(GPCLK0). Kullanmak istiyorsanız GPIO 7(CE1), GPIO.setmode(GPIO.BCM)bunun yerine

resim açıklamasını buraya girin

Ben bir 1k direnç dokunarak kodu test 3V3 PoweriçinGPIO 4(GPCLK0)


Neden işe yaramadığına dair doğru olduğundan neredeyse eminim. Ben izlenim altında GPIO.BOARDfiziksel pin numaralandırma düzeni değil, resimlerde gösterildiği gibi kurulu kendisi pinout için oldu. İşten eve döndüğümde deneyeceğim ve işe yarayacağından eminim.
Michael

1

Pin kurulumunda asla "pull_up_down = GPIO.PUD_DOWN" kullanmam. Bunu dene:

GPIO.setmode(GPIO.BCM)
GPIO.setup(PinNum,GPIO.IN)
while 1==1:
    if GPIO.input(PinNum)==1:
        print "True"
    else:
        print "False"

Gnibbler'in dediği gibi PinNum'un BCM GPIO için olduğundan emin olun.

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.