GPIO를 통해 버튼을 어떻게 읽습니까?


15

나는 오래 전에 이런 종류의 초급 레벨에서 나 자신을 고려했지만, 내가 생각했던 것만 큼 똑똑하지 않다고 생각합니다.

그래서 마침내 시험을 마치고 새 장난감을 가지고 놀 수 있었으므로 가장 먼저 UART에 LCD 문자 디스플레이를 설치했습니다. 나는 아무런 문제없이 작동 하므로이 버튼으로 왜 그렇게 힘든 시간을 보내고 있는지 알아내는 데 정말로 어려움을 겪고 있습니다!

그래서 arduino와 비슷한 버튼을 설정했습니다. 접지에 연결된 1k 저항. 나는 멀티 미터를 사용하여 버튼이 작동하고 올바른 양의 전력을 출력하는지 확인했습니다. 쉘에 SSH를 넣고 GPIO 핀 7에 버튼을 꽂고 파이썬에 갔다. 내가 시도한 것은 다음과 같습니다.

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

이것은 False버튼을 어떻게 누르 든 관계없이 무한 루프를 제공 합니다. 나는 그것을 사용해 보았고 대신 GPIO.PUD_UP무한 루프를 얻었다 True. 나는 또한 그것을 시도하고 GPIO.PUD_OFF더 많은 것을 얻었다 False.

여기에 뭔가 빠졌습니까?


따라서 1k 저항과 GND 스위치가 직렬로 연결되어 있습니까? 그것은 작동합니다 GPIO.PUD_UP. 전원을 켜고 GPIO.PUD_UP버튼을 눌렀을 때 어떤 전압이 보입니까 ?
John La Rooy

약간 혼란스러운; 스위치는 무엇에 연결되어 있습니까?
Alex Chamberlain

Michael 님, Raspberry Pi에 오신 것을 환영합니다 ! 두 계좌를 합병 할 자유를 얻었습니다. 감사!

답변:


6

내 GPIO에는이 없습니다. pinout로 변경해야했습니다.setmode

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.BOARD핀 7을 사용하고 있으므로 레이블이 붙어 GPIO 4(GPCLK0)있습니다. 을 사용하려는 경우 대신 GPIO 7(CE1)사용해야 GPIO.setmode(GPIO.BCM)합니다.

여기에 이미지 설명을 입력하십시오

1k 저항을 터치하여 코드를 테스트 3V3 Power했습니다.GPIO 4(GPCLK0)


나는 왜 그것이 작동하지 않는지에 대한 당신의 올바른 생각입니다. 나는 GPIO.BOARD물리적 핀 번호 체계가 아니라 그림과 같이 보드 자체의 핀 배치에 대한 인상을 받았다. 직장에서 집으로 돌아올 때 시도해보고 제대로 작동 할 것입니다.
Michael

1

핀 설정에서 "pull_up_down = GPIO.PUD_DOWN"을 사용하지 않습니다. 이 시도:

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

gnibbler가 말했듯이 PinNum이 BCM GPIO를위한 것인지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.