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

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

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





Из этого туториала Вы узнаете, как добавить кнопку в проект Raspberry Pi двумя способами. Кнопка будет использоваться для управления светодиодом. Письменные инструкции доступны под видео.





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

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





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

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

Вам также понадобится SD-карта с установленной операционной системой Raspbian. Самый быстрый способ сделать это - использовать образ NOOBS (New Out Of The Box Software). Инструкции, как это сделать, доступны в этом видео:



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

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

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





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

После настройки он должен выглядеть следующим образом:

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





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

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

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

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

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

ledPin = 12
buttonPin = 16

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

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

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

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

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

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

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

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

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

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

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

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

Теория подтягивающих и понижающих резисторов на первый взгляд сбивает с толку, но это важные знания, которые необходимо иметь при работе с микроконтроллерами. А пока, если вы этого не совсем понимаете, не волнуйтесь!

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

Программный цикл

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

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.

Сохраните и запустите свой сценарий

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

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

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

Метод 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).

лучший контроллер для raspberry pi 3

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

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

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

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

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

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

Делиться Делиться Твитнуть Эл. адрес 5 советов, как зарядить ваши машины VirtualBox Linux

Устали от низкой производительности виртуальных машин? Вот что вам нужно сделать, чтобы повысить производительность VirtualBox.

Читать далее
Похожие темы
  • Сделай сам
  • Raspberry Pi
  • Python
  • GPIO
  • Руководства по проектам DIY
Об авторе Ян Бакли(Опубликовано 216 статей)

Ян Бакли - независимый журналист, музыкант, исполнитель и видеопродюсер, живущий в Берлине, Германия. Когда он не пишет или на сцене, он возится с электроникой или кодом своими руками в надежде стать безумным ученым.

Ещё от Ian Buckley

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться