Реклама
Обучение использованию выводов 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 проектс добавлением кнопки, которую вы будете использовать сегодня.
Настройте вашу схему в соответствии с этой схемой:
- 5v и GND контакты соединяются с силовыми шинами макета.
- Контакт 12 (GPIO 18) подключается к положительной ножке светодиода.
- Одна нога резистор прикрепляется к отрицательной ножке светодиода, а другая ножка прикрепляется к шине заземления макета.
- Контакт 16 (GPIO 23) прикрепляется к одной стороне кнопки, другая сторона прикрепляется к шине заземления.
Как только он будет настроен, вот как это должно выглядеть:
Проверьте правильность схемы, а затем включите Raspberry Pi.
Способ 1: RPi. Библиотека GPIO
После загрузки Pi перейдите в меню и выберите Программирование> Thonny Python IDE. Откроется новый скрипт Python. Если вы новичок в Python, это отличный язык для начинающих, и есть много замечательных мест, чтобы узнать больше о Python после того, как вы закончили с этим уроком!
Начните с импорта RPi. Библиотека GPIO и настройка режима платы.
импорт RPi. GPIO как 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 на первый взгляд сбивает с толку, но это важные знания при работе с микроконтроллерами. На данный момент, если вы не совсем понимаете это, не волнуйтесь!
Давайте продолжим там, где мы остановились.
Цикл программы
Далее настройте цикл программы:
в то время как True: buttonState = GPIO.input (buttonPin), если buttonState == False: GPIO.output (ledPin, GPIO.HIGH) остальное: GPIO.output (ledPin, GPIO.LOW)
пока верно цикл постоянно выполняет код внутри него, пока мы не закончим программу. Каждый раз, когда он зацикливается, он обновляет buttonState читая входные данные из buttonPin. Пока кнопка не нажата, она остается ВЫСОКО.
Как только кнопка нажата, buttonState становится НИЗКИЙ. Это вызывает если заявление, поскольку Ложь такой же как НИЗКИЙи включается светодиод. еще оператор выключает светодиод всякий раз, когда buttonPin не False.
Сохраните и запустите ваш скрипт
Сохраните ваш скрипт, нажав Файл> Сохранить как и выбрав имя файла. Вы можете запустить эскиз, нажав на зеленый Играть Кнопка на панели инструментов Тонны.
Теперь нажмите кнопку, и ваш светодиод должен загореться! Нажмите красный Стоп кнопка в любое время, чтобы остановить программу
Если у вас возникли проблемы, тщательно проверьте код и схему на наличие ошибок и повторите попытку.
Способ 2: нулевая библиотека GPIO
RPi. Библиотека GPIO фантастическая, но в блоке есть новый ребенок. Нулевая библиотека GPIO была создатель менеджер сообщества Raspberry Pi Бен Натталл с целью сделать код проще и легче читать и писать.
Чтобы проверить новую библиотеку, откройте новый файл Thonny и импортируйте библиотеку.
из гпиозеро импортный светодиод, кнопка. от паузы импорта сигнала.
Вы заметите, что не импортировали всю библиотеку. Поскольку вы используете только светодиод и кнопку, вам требуются только те модули в сценарии. Мы также импортируем Пауза из библиотеки сигналов, которая является библиотекой Python для управления событиями.
Настроить контакты гораздо проще с GPIO Zero:
светодиод = светодиод (18) кнопка = кнопка (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 Raspberry Pi: неофициальный урокЕсли вы являетесь нынешним владельцем Pi, который хочет узнать больше или потенциальным владельцем этого устройства размером с кредитную карту, это руководство не для вас. Прочитайте больше наполнен творческими идеями и учебными пособиями, которые вы можете попробовать сами! Для другого учебника как этот, проверьте как сделать Wi-Fi подключенной кнопкой Как сделать свою собственную кнопку подключения Wi-Fi с ESP8266В этом руководстве вы узнаете, как создать кнопку с поддержкой Wi-Fi с помощью NodeMCU и IFTTT. Прочитайте больше .
Ян Бакли - независимый журналист, музыкант, исполнитель и продюсер, живущий в Берлине, Германия. Когда он не пишет или не играет на сцене, он возится с электроникой или кодом «сделай сам» в надежде стать безумным ученым.