ГлавнаяРуководства для ПККак использовать кнопки с контактами GPIO Raspberry Pi

Как использовать кнопки с контактами GPIO Raspberry Pi

Использование кнопок с контактами GPIO Raspberry Pi

то вы, вероятно, знаете, как работают выходы GPIO. Код заставляет электричество проходить через контакты ввода/вывода общего назначения (GPIO), проходить через светодиоды и освещать объекты. Но пробовали ли вы когда-нибудь сделать обратное? С помощью кнопок вы можете сделать прямо противоположное. Из этого туториала вы узнаете, как превратить контакт GPIO во входной контакт, прослушивая каждое нажатие кнопки!

Читайте также: Как сделать мигающие светодиоды с помощью Raspberry Pi

Как работают кнопки

Кнопка — это тип переключателя. Он имеет два отдельных проводящих контакта, которые предотвращают замыкание цепи, поскольку они отделены друг от друга. Когда вы нажимаете кнопку, вы фактически сжимаете два контакта вместе, замыкая цепь. Но если отпустить, появится пружинный механизм, который снова разделит штифты.

Contents

Как работают кнопки

макетной плате Solo">

Читайте также: Как превратить Raspberry Pi в станцию ​​для видеоконференций

4-контактные кнопки

Обычная кнопка в наборе датчиков имеет четыре контакта, каждый из которых отделен от других. Прямо под областью кнопки расположена подвижная металлическая пластина, которая опускается вниз и соединяет все остальные контакты при нажатии кнопки вниз.

Кнопка Задняя сторона

Внутри 4-контактной кнопки вы найдете две пластины. Каждый подключен к двум внешним контактам. Обе пластины хранятся отдельно друг от друга, и их можно соединить только нажатием на третью пластину — металлическую пластину под кнопкой.

Распиновка 4-контактной кнопки

В некотором смысле, в кнопке всегда соединены два контакта. Когда вы нажимаете 4-контактную кнопку, вы соединяете все четыре контакта вместе.

Читайте также: Как запрограммировать Arduino с помощью Raspberry Pi

Исполь

4-контактные кнопки

GPIO Raspberry Pi

На этот раз мы заставляем контакты Raspberry Pi GPIO обнаруживать нажатие кнопки. Когда через него проходит электричество, Raspberry Pi распечатает сообщение о том, что он работает.

Вещи, которые вам понадобятся

  • Кнопка (4-контактная)
  • Резистор (должен подойти резистор сопротивлением от 100 до 1000 Ом)
  • Перемычки
  • Вольтметр (необязательно)
  • Малиновый Пи
  • Монитор и клавиатура (или SSH)

Читайте также: Как установить Windows 11 на Raspberry Pi 4

Как использовать кнопки

  1. Откройте выбранный вами редактор кода и вставьте следующий код:
import RPi.GPIO as GPIO
from time import sleep
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
 
while True:
  if GPIO.input(7) == GPIO.HIGH:
    print("Pin 7 is HIGH!")
  elif GPIO.input(7) == GPIO.LOW:
    print("Pin 7 is LOW...")
  sleep(0.15)
  1. Сохраните как «rpi-pushbutton.py» (или любое другое имя по вашему желанию, если расширение файла такое же).
  1. Постройте схему. На одном контакте кнопки подключите его к контакту 7 и параллельно резистору. Подсоедините перемычку к контакту GND (контакты 6, 7, 14, 20, 25, 30, 34 или 39) на другой стороне этого резистора, затем прикрепите другую перемычку к контакту 3,3 В (ко

    Вещи, которые вам понадобятся

    кте кнопки.
Схема кнопки и макетная версия

Совет. Чтобы найти правильный номер контакта, держите Raspberry Pi так, чтобы контакты GPIO находились в правом верхнем углу. Левый верхний контакт — это контакт 1, а справа от него — контакт 2. Под контактом 1 — контакт 3, справа — контакт 4 и т. д.

Распиновка Raspberry Pi
    <

    Как использовать кнопки

    йте терминал. Используйте cd, чтобы перейти в каталог сценария Python, затем введите python3 rpi-pushbutton.py. Если вы использовали другое имя файла, используйте его вместо «rpi-pushbutton».
Терминал Cd Кнопка Python3 Rpi
  1. Вы должны видеть на терминале новую строку текста с надписью Pin 7 is LOW...каждые 0,15 секунды. Если вы нажмете кнопку, новая строка будет Pin 7 is HIGH!.

Если вы переключите контакты GND и 3,3 В, поставив 3,3 В на резистор и GND на другую сторону кнопки, вы измените логику кнопки. Он будет выводить Pin 7 is HIGH!все время и станет Pin 7 is LOW, когда вы нажмете кнопку.

Кнопка Pull Up и резисторы Pull Down

Читайте также: 6 лучших альтернатив Raspberry Pi

Аппаратное обеспечение кнопок

В кнопках используются резисторы двух типов: повышающие и понижающие. Тот, к которому подключено напряжение 3,3 В, является подтягивающим резистором. Он поднимает напряжение вверх. Между тем, понижающие резисторы понижают напряжение, подключая к ним контакт GND.

Вы по-прежнему можете использовать кнопку без резистора, но при этом ваш вывод GPIO останется в плавающем состоянии. Плавающий вывод GPIO не получает прямого электрического заряда, поэтому он ищет заряды в своем окружении. Например, если рядом с ним находится сильное электромагнитное поле, он просто измерит его.

Схема кнопки без резистора

Вот почему вам нужен ориентир. Если по умолчанию подключить вывод GPIO к 0 В (GND), то он будет измерять 0 В, пока кнопка не нажата. Но если вы этого не сделаете, значение вывода GPIO может быть любым — даже отрицательным!

Однако плавающие булавки могут делать некоторые интересные вещи. Если вы оставите булавку плавающей, она сможет почувствовать разницу напряжений в воздухе, измеряя даже эффект движения пальца рядом с самой булавкой. Это что-то вроде электромагнитного датчика присутствияили что-то в этом роде.

Однако очень жаль, что вы не можете сделать это просто на Raspberry Pi. Чтобы это было полезно, вам потребуются аналоговые контакты, а у Raspberry Pi их нет.

Код для кнопок

Зная это, вы должны понимать, что контакт 7 определяет, проходит ли через него напряжение 3,3 В или 0 В. Если он обнаруживает 3,3 В, он сообщает о себе как ВЫСОКИЙ. Но если он обнаруживает 0 В, то это НИЗКИЙ уровень.

Давайте разделим код на три части: команды импорта, команды настройки и зацикленные команды.

Команды импорта

Мы используем две команды импорта:

import RPi.GPIO as GPIO
from time import sleep

import RPi.GPIO as GPIOимпортирует модуль RPi.GPIO, который позволяет вам делать что-то с контактами GPIO вашего Raspberry Pi. Добавляя в конце as GPIO, вы сообщаете Python, что ввод GPIOэквивалентен вводу RPi.GPIO. Вы даже можете заменить его другими строками, и код будет работать, если вы его правильно отформатируете.

С другой стороны, from time import sleepимпортирует только часть модуля времени Python. Он позволяет использовать функцию sleep().

Команды настройки

Мы работаем с тремя командами из модуля RPi.GPIO над командами настройки, чтобы исправить некоторые настройки.

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

Модуль RPi.GPIO обычно отображает сообщение, предупреждающее об использовании контактов GPIO, как только вы запускаете скрипт Python. GPI

Аппаратное обеспечение кнопок

ет это.

GPIO.setmode(GPIO.BOARD)— еще одна команда модуля RPi.GPIO. Он сообщает Python, что вы используете распиновку «BOARD». В RPi.GPIO есть два типа распиновки: BOARD и BCM. BOARD позволяет выбирать контакты, используя номера контактов. BCM (сокращение от Broadcom) позволяет выбирать контакты для отдельного канала Broadcom SOC. BOARD намного проще в использовании, поскольку он всегда один и тот же, независимо от того, какую плату Raspberry Pi вы используете. Распиновка BCM может меняться в зависимости от используемой модели.

Наконец, GPIO.setup(7, GPIO.IN)позволяет вам установить контакт 7 в качестве входного контакта. Он использует функцию .setup()и читает 7как пин-код, который вы пытаетесь выбрать. GPIO.INозначает, что вы пытаетесь установить его в качестве входного контакта.

Также читайте: Руководство для начинающих по Arduino

Зацикленные команды

Встроенные системы обычно используют всего несколько строк кода и повторяют их бесконечно. В разных языках программирования это делается по-разному. Но концепция та же: они используют своего рода цикл. Для Python это while True:.

while True:
  if GPIO.input(7) == GPIO.HIGH:
    print("Pin 7 is HIGH!")
  elif GPIO.input(7) == GPIO.LOW:
    print("Pin 7 is LOW...")
  sleep(0.15)

while True:позволяет бесконечно зацикливать код. Все, что вы туда поместите, будет работать вечно, пока на плате есть электричество.

if GPIO.input(7) == GPIO.HIGH:— это оператор if. В нем говорится, что если контакт 7, который является входным, читается как HIGH, то он должен делать все внутри него.

print("Pin 7 is HIGH!")находится внутри оператора if. Все, что он делает, это выводит Pin 7 is HIGH!на консоль. Вы можете заменить это любой строкой, числом или переменной, которая их содержит.

Код для кнопок

de>elif GPIO.input(7) == GPIO.LOW:
. По сути, он такой же, как if GPIO.input(7) == GPIO.HIGH:, за исключением первой части: вместо ifиспользуется elif. Код elifозначает «Иначе, если». Он говорит о том, что если весь остальной код выше возвращает false, то Python должен выполнить этот оператор else-if.

Наконец, sleep(0.15)приостанавливает код на 0,15 секунды. Зачем вообще приостанавливать код? В основном это касается проблем с производительностью. Raspberry Pi отправит в

Команды импорта

что ваш графический интерфейс немного замедлится. Это еще более выражено, если вам используя Raspberry Pi через SSH . Будет заметная задержка, которая со временем будет только ухудшаться. Приостановка кода замедляет его, чтобы избежать проблем с производительностью.

Читайте также: Как программировать Arduino через код Visual Studio с использованием PlatformIO

Часто задаваемые вопросы

Безопасно ли производить горячую замену контактов на Raspberry Pi?

Горячая замена или замена контактов Raspberry Pi во включенном состоянии, как правило, является плохой идеей. Всегда безопаснее отключить его от источника питания перед переключением.

Команды настройки_fs_faq sc_card ">

Чем 4-контактные кнопки лучше 3-контактных?

С точки зрения полезности они практически одинаковы. Но наличие четырех контактов позволяет подключить 4-контактную кнопку к другой кнопке в последовательной схеме.

Могу ли я использовать любой контакт Raspberry Pi в качестве входного?

У Raspberry Pi может быть 40 контактов, но только 27 из них являются GPIO. Вы можете запрограммировать только контакты GPIO на входные и выходные контакты. Большинство IDE не позволяют перепрограммировать вывод, отличный от GPIO, во входной вывод.

Все фотографии и скриншоты сделаны Теренцем Джомаром Дела Крузом

Зацикленные команды

Часто задаваемые вопросы

Безопасно ли производить горячую замену контактов на Raspberry Pi?

Чем 4-контактные кнопки лучше 3-контактных?

Могу ли я использовать любой контакт Raspberry Pi в качестве входного?

ПОХОЖИЕ СТАТЬИ

Популярные записи