Як прочитати кнопку через GPIO?


15

Я давно вважав себе подібним до речі для початківців, але, мабуть, я не такий розумний, як я вважав, що був, тому що, здається, у мене є надзвичайний рівень проблем з цим!

Тож я нарешті закінчив іспити і можу пограти зі своєю новою іграшкою, тому перше, що я зробив, це отримати РК-дисплей символів, встановлений над UART. У мене це не працює, тому мені дуже важко зрозуміти, чому мені так важко за допомогою цієї кнопки!

Тому я встановив кнопку, схожу на те, як було б з ардуїно; з резистором 1 к, що підключається до землі. Я використовував свій мультиметр, щоб переконатися, що кнопка спрацьовує та видає потрібну потужність, яка вона є. Я 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.

Я щось тут пропускаю?


Отже, у вас є перемикач послідовно з резистором 1 к GND? З цим слід працювати GPIO.PUD_UP. Яку напругу ви бачите з GPIO.PUD_UPувімкненою та натиснутою кнопкою?
Джон Ла Руй

Трохи розгублений; до чого підключений перемикач?
Алекс Чемберлен

Привіт Майкл та Ласкаво просимо до 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це стосується закріплення самої дошки, як показано на малюнках, а не фізичної схеми нумерації штифтів. Коли я повернуся з роботи додому, я спробую це, і я впевнений, що це спрацює.
Майкл

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"

Як сказав гніблер, переконайтеся, що PinNum призначений для BCM GPIO.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.