2 способа добавить кнопку в ваш проект Raspberry Pi

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

Этот туториал покажет вам два способа добавить кнопку в ваш проект Raspberry Pi. Кнопка будет использоваться для управления светодиодом. Письменные инструкции доступны под видео.

Тебе понадобится

Для начала убедитесь, что у вас есть следующие компоненты:

  • 1 х Raspberry Pi (подойдет любой, в этом уроке используется модель 3B)
  • 1 х кнопка
  • 1 х светодиодный
  • 1 х 220 Ом резистор (более высокие значения в порядке, ваш светодиод будет просто тусклее)
  • 1 х макет
  • Подключить провода

После сбора у вас должны быть компоненты, которые выглядят примерно так:

Части, необходимые для учебника по кнопке Пи

Вам также понадобится SD-карта с установленной операционной системой Raspbian. Самый быстрый способ сделать это с помощью образа NOOBS (Новое программное обеспечение из коробки). Инструкции о том, как это сделать, доступны в этом видео:

Настройка схемы

Вы будете использовать контакты GPIO Pi для создания цепи, и если вы не знакомы с ними, поможет наше руководство по контактам Raspberry Pi GPIO. Схема здесь почти такая же, как в нашем предыдущем проекте Raspberry Pi LED, с добавлением кнопки, которую вы будете использовать сегодня.

Настройте вашу схему в соответствии с этой схемой:

Fritzing Diagram для учебника по кнопке Пи

  • 5v а также GND контакты соединяются с силовыми шинами макета.
  • Контакт 12 (GPIO 18) подключается к положительной ножке светодиода.
  • Одна нога резистор прикрепляется к отрицательной ножке светодиода, а другая ножка прикрепляется к шине заземления макета.
  • Контакт 16 (GPIO 23) прикрепляется к одной стороне кнопки, другая сторона прикрепляется к шине заземления макета.

После того, как это настроено, вот как это должно выглядеть:

Raspberry Pi подключили к кнопке и светодиоду на макете.

Проверьте правильность схемы, а затем включите Raspberry Pi.

Метод 1: Библиотека RPi.GPIO

После загрузки Pi перейдите в меню и выберите Программирование> Thonny Python IDE. Откроется новый скрипт Python. Если вы абсолютно новичок в Python, это отличный язык для начинающих, и есть много отличных мест, где можно больше узнать о Python после того, как вы закончите с этим руководством!

Тони Питон IDE

Начните с импорта библиотеки RPi.GPIO и установки режима платы.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)

Теперь объявите переменные для номеров светодиодов и выводов кнопок.

ledPin = 12
buttonPin = 16

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

Моя Пи Пинаут

Настройка кнопки

Пришло время настроить выводы GPIO. Установите вывод светодиода на вывод, а вывод кнопки — на вход с подтягивающим резистором

GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Текст после GPIO.IN относится к внутренний подтягивающий резистор малины пи. Вы должны включить это, чтобы получить чистое чтение с кнопки. Поскольку кнопка идет к выводу заземления, нам нужен подтягивающий резистор, чтобы удерживать входной вывод ВЫСОКИЙ, пока вы не нажмете его.

Прежде чем мы продолжим, давайте посмотрим на подтягивающие и понижающие резисторы.

Интервал: резисторы Pull Up / Pull Down

Когда вы настраиваете вывод GPIO для ввода, он считывает этот вывод, чтобы определить его состояние. В этой схеме вам нужно прочитать, есть ли контакт ВЫСОКО или же НИЗКИЙ активировать светодиод при нажатии кнопки. Это было бы просто, если бы это были единственные состояния, которые может иметь вывод, но, к сожалению, существует третье состояние: FLOATING.

Плавающий штифт имеет значение между высоким и низким, что приводит к непредсказуемым действиям входа. Решающие проблемы решают резисторы с повышением / понижением.

Пример схемы подтягивающего резистора

Изображение выше представляет собой упрощенную схему кнопки и Raspberry Pi. Вывод GPIO подключается к земле через кнопку. Внутренний подтягивающий резистор присоединяет вывод GPIO к внутреннему источнику питания Pi. Этот ток течет, и штифт безопасно поднимается до ВЫСОКОГО.

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

Схема примера резистора с понижающим сопротивлением

Понижающие резисторы предназначены для подключения переключателя к выводу питания. На этот раз внутренний резистор прикрепляет вывод GPIO к земле, удерживая его в НИЗКОМ, пока вы не нажмете кнопку.

Теория резисторов Pull-up и Pull-down на первый взгляд сбивает с толку, но это важные знания при работе с микроконтроллерами. Пока, если вы не совсем понимаете это, не волнуйтесь!

Давайте продолжим там, где мы остановились.

Цикл программы

Далее настройте цикл программы:

while True:
buttonState = GPIO.input(buttonPin)
if buttonState == False:
GPIO.output(ledPin, GPIO.HIGH)
else:
GPIO.output(ledPin, GPIO.LOW)

пока верно Цикл постоянно запускает код внутри него, пока мы не закончим программу. Каждый раз, когда он зацикливается, он обновляет buttonState читая входные данные из buttonPin. Пока кнопка не нажата, она остается ВЫСОКО.

Как только кнопка нажата, buttonState становится НИЗКИЙ. Это вызывает если заявление, поскольку Ложь такой же как НИЗКИЙ, и светодиод включается. еще оператор выключает светодиод всякий раз, когда buttonPin не False.

Сохраните и запустите ваш скрипт

Сохраните ваш скрипт, нажав Файл> Сохранить как и выбрав имя файла. Вы можете запустить эскиз, нажав на зеленый Играть кнопка на панели инструментов Тонны.

Тони Панель управления

Теперь нажмите кнопку, и ваш светодиод должен загореться! Нажмите красный Стоп кнопка в любое время, чтобы остановить программу

GIF-тестирование кнопки

Если у вас возникли трудности, тщательно проверьте свой код и схему на наличие ошибок и повторите попытку.

Способ 2: нулевая библиотека GPIO

Библиотека RPi.GPIO фантастическая, но в блоке есть новый ребенок. Нулевая библиотека GPIO была создана менеджером сообщества Raspberry Pi Беном Натталлом с целью сделать код проще и удобнее для чтения и записи.

Чтобы проверить новую библиотеку, откройте новый файл Thonny и импортируйте библиотеку.

from gpiozero import LED, Button
from signal import pause

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

Настроить контакты гораздо проще с GPIO Zero:

led = LED(18)
button = Button(23)

Поскольку библиотека GPIO Zero имеет модули для светодиода и кнопки, вам не нужно настраивать входы и выходы, как раньше. Вы заметите, что, хотя контакты не изменились, цифры здесь отличаются от приведенных выше. Это связано с тем, что GPIO Zero использует только номера контактов GPIO (также известные как номера Broadcom или BCM).

Остальная часть сценария состоит всего из трех строк:

button.when_pressed = led.on
button.when_released = led.off
pause()

Пауза() вызов здесь просто останавливает выход сценария, когда он достигает дна. События двух кнопок запускаются всякий раз, когда кнопка нажата и отпущена. Сохраните и запустите ваш скрипт, и вы увидите тот же результат, что и раньше!

Два способа добавить кнопку в Raspberry Pi

Из двух способов настройки кнопки, метод GPIO Zero кажется самым простым. О библиотеке RPi.GPIO все еще стоит узнать, так как ее используют большинство начинающих проектов Raspberry Pi. Как бы ни был прост этот проект, знания могут быть использованы для разных целей.

Использование выводов GPIO — отличный способ выучить и изобрести свои собственные устройства, но это далеко не все, что вы можете сделать с Pi. Наш неофициальный гид по Raspberry Pi

наполнен творческими идеями и учебными пособиями, которые вы можете попробовать сами! Для другого учебника, подобного этому, проверьте, как сделать кнопку подключенной к Wi-Fi

,

Ссылка на основную публикацию
Adblock
detector