banner

Блог

Sep 17, 2023

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ДЕЛИТЬСЯ