Dawno temu zastanawiałem się nad tym rodzajem rzeczy dla początkujących, ale wydaje mi się, że nie jestem tak mądry, jak mi się wydawało, ponieważ wydaje mi się, że mam z tym wyjątkowy problem!
W końcu skończyłem egzaminy i mogłem grać z moją nową zabawką, więc pierwszą rzeczą, jaką zrobiłem, było ustawienie wyświetlacza LCD nad UART. Nie mam z tym problemu, więc ciężko mi jest zrozumieć, dlaczego tak trudno mi się z tym przyciskiem!
Więc ustawiłem przycisk podobny do tego, który można by zrobić z arduino; z rezystorem 1k łączącym z masą. Użyłem multimetru, aby upewnić się, że przycisk działa, i wyzwolić odpowiednią ilość energii. Włączam SSH do mojej powłoki, podłączam przycisk do GPIO pin 7 i przeszedłem do Pythona. Oto, co próbowałem:
GPIO.pinout(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while 1==1:
inputval = GPIO.input(7)
print inputval
Daje mi to nieskończoną pętlę False
niezależnie od tego, jak naciskam przycisk. Próbowałem też z GPIO.PUD_UP
tym i True
zamiast tego dostałem nieskończoną pętlę . Próbowałem też GPIO.PUD_OFF
i dostałem więcej False
.
Czy coś mi umyka?
GPIO.PUD_UP
. Jakie napięcie widzisz poGPIO.PUD_UP
włączeniu i naciśnięciu przycisku?Odpowiedzi:
Moje GPIO nie ma
pinout
, musiałem to zmienićsetmode
Ponieważ używasz
GPIO.BOARD
pinu 7, ten jest oznaczonyGPIO 4(GPCLK0)
. Jeśli chciałeś użyćGPIO 7(CE1)
, powinieneś użyćGPIO.setmode(GPIO.BCM)
zamiast tegoPrzetestowałem kod, dotykając rezystora 1k od
3V3 Power
doGPIO 4(GPCLK0)
źródło
GPIO.BOARD
że pinout samej płyty, jak pokazano na zdjęciach, a nie fizyczny schemat numeracji pinów. Kiedy wrócę do domu z pracy, wypróbuję go i jestem pewien, że zadziała.Nigdy nie używam „pull_up_down = GPIO.PUD_DOWN” w konfiguracji pinu. Spróbuj tego:
Jak powiedział gnibbler, upewnij się, że PinNum jest dla GPIO BCM.
źródło