Управление цифровыми выходами Raspberry Pi с помощью Python (светодиод)

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

Управление цифровыми выходами Raspberry Pi с помощью Python — светодиод

В этом руководстве мы рассмотрим следующие основные темы:

  1. Знакомство с GPIO Raspberry Pi

  2. Подключение схемы

  3. Управление выходами Raspberry Pi с помощью gpiozero

Предварительные требования

Прежде чем продолжить работу с этим руководством, проверьте следующие предварительные требования.

  1. Ознакомьтесь с платой Raspberry Pi — если вы ещё не знакомы с Raspberry Pi, вы можете прочитать наше :doc:`руководство по началу работы с Raspberry Pi </raspberry/rnt/getting-started-with-raspberry-pi/index>`_.

  2. Вы должны уметь запускать и создавать файлы Python на Raspberry Pi. Мы предпочитаем программировать Raspberry Pi удалённо через SSH, используя расширение в VS Code. У нас есть подробное руководство на эту тему: :doc:`Программирование Raspberry Pi удалённо с помощью VS Code (Remote-SSH) </raspberry/rnt/raspberry-pi-remote-ssh-vs-code/index>`_.

Знакомство с GPIO Raspberry Pi

GPIO расшифровывается как General Purpose Input Output (контакты общего назначения ввода-вывода), и они позволяют подключать и управлять электронным оборудованием, таким как светодиоды, двигатели и датчики, к вашему Raspberry Pi.

Это означает, что они могут использоваться как для чтения, так и для отправки информации, позволяя вашему Pi взаимодействовать с внешним миром.

Большинство моделей плат Raspberry Pi имеют двойной ряд из 40 контактов GPIO. Расположение контактов обычно одинаково для большинства моделей Raspberry Pi.

В этом руководстве мы рассмотрим, как настроить GPIO Raspberry Pi в качестве выходов для управления светодиодом или любым другим исполнительным устройством, которое можно контролировать с помощью сигналов HIGH (3,3 В) и LOW (0 В).

Нумерация GPIO Raspberry Pi

Существует два различных способа обращения к контакту GPIO: по его имени (известному как нумерация GPIO или нумерация Broadcom) или по соответствующему физическому номеру контакта (который соответствует физическому расположению контакта на разъёме).

Например, GPIO 25 соответствует контакту 22 (см. изображение ниже). В этом руководстве мы будем обращаться к контактам GPIO по их нумерации GPIO (нумерация Broadcom).

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

Чтобы узнать больше о GPIO Raspberry Pi, ознакомьтесь с этим руководством: :doc:`Руководство по распиновке Raspberry Pi: как использовать GPIO Raspberry Pi? </raspberry/rnt/raspberry-pi-pinout-gpios/index>`_

Контакты GPIO можно установить в состояние HIGH, которое выдаёт 3,3 В и включает компонент, или LOW, которое выдаёт 0 В и выключает компонент.

Подключение схемы

Подключите светодиод к одному из GPIO Raspberry Pi. Мы подключим один светодиод к GPIO 14 (контакт 8). Вы можете использовать любые другие контакты, кроме GPIO 0 и GPIO 1.

Вот список необходимых компонентов:

Вы можете воспользоваться вышеуказанными ссылками или перейти непосредственно на MakerAdvisor.com/tools , чтобы найти все детали для ваших проектов по лучшей цене!

Светодиод подключён к GPIO14 Raspberry Pi — схема

Управление выходами Raspberry Pi с помощью gpiozero

Библиотека gpiozero предоставляет набор интерфейсов для повседневных компонентов, таких как светодиоды, кнопки, потенциометры, датчики и многое другое. Таким образом, вместо настройки свойств GPIO для управления светодиодом, gpiozero предоставляет интерфейс LED с методами, которые полезны для управления светодиодами. Кроме того, вы также можете использовать интерфейс DigitalOutputDevice, который можно применять для управления цифровыми выходами в целом (включая светодиоды). Давайте посмотрим, как это работает.

Библиотека gpiozero должна быть уже установлена, если вы используете Raspberry Pi OS — если нет, вы можете выполнить следующую команду:

python3 -m pip gpiozero

Создайте новый файл Python на Raspberry Pi с именем blinking_led.py и скопируйте следующий код.

# Complete Project Details: https://RandomNerdTutorials.com/projects-raspberry-pi/

from gpiozero import LED
from time import sleep

led = LED(14)

# blinking an LED forever
while True:
  #set the led ON for one second
  led.on()
  sleep(1)
  #set the led ON for one second
  led.off()
  sleep(1)

Просмотреть исходный код

Как работает код

Продолжайте чтение, чтобы узнать, как работает код.

Импорт библиотек

Сначала вы импортируете компонент LED из библиотеки gpiozero для управления GPIO, к которому подключён светодиод. Затем вам также нужно импортировать функцию sleep() из модуля time для создания задержек в коде.

from gpiozero import LED
from time import sleep

Вместо компонента LED вы можете использовать компонент DigitalOutputDevice, который работает точно так же.

from gpiozero import DigitalOutputDevice

Объявление светодиода

Далее вы создаёте объект LED с именем led, который ссылается на GPIO 14 — это GPIO, к которому подключён светодиод. Измените номер, если вы используете другой GPIO.

led = LED(14)

Когда вы создаёте и используете этот объект LED, ваша программа знает, что GPIO 14 является выходом, который можно установить в состояние HIGH или LOW. После этого объявления вы можете использовать led для обращения к вашему GPIO 14. Вы можете использовать этот объект LED для управления другими компонентами, помимо светодиодов, при условии, что они могут управляться сигналами HIGH (3,3 В) и LOW (0 В).

Примечание: если вы хотите использовать вместо этого компонент DigitalOutputDevice, объявление будет следующим:

led = DigitalOutputDevice(14)

Цикл While

Затем, чтобы светодиод мигал бесконечно, мы создаём цикл while, который всегда True — код будет выполняться бесконечно, пока вы не остановите программу. Строки после объявления цикла имеют отступ, что сообщает Python, что это содержимое цикла, которое должно выполняться, пока условие while выполняется.

# blinking an LED forever
while True:
  #set the led ON for one second
  led.on()
  sleep(1)
  #set the led ON for one second
  led.off()
  sleep(1)

Управление цифровым выходом

Объект LED имеет два метода, которые вы можете использовать для включения и выключения GPIO — методы on() и off(). Вы можете использовать их следующим образом:

led.on()
led.off()

Инструкция led.on() включает GPIO 14, а led.off() выключает GPIO 14. Между каждым состоянием светодиода есть пауза в одну секунду с использованием функции sleep(), создающая эффект мигания. Функция sleep() принимает в качестве аргумента время в секундах.

sleep(1)

Подведём итог…

1) Для управления цифровым выходом Raspberry Pi вы можете использовать интерфейс LED или DigitalOutputDevice библиотеки gpiozero. Сначала его нужно импортировать следующим образом:

from gpiozero import LED

или так:

from gpiozero import DigitalOutputDevice

2) Определите GPIO, которым вы хотите управлять. Используя интерфейс LED:

led = LED(GPIO_NUMBER_OF_YOUR_CHOICE)

Или если вы используете интерфейс DigitalOutputDevice:

led = DigitalOutputDevice(GPIO_NUMBER_OF_YOUR_CHOICE)

3) Затем используйте методы on() и off() для включения и выключения GPIO.

led.on()
led.off()

Демонстрация

Сохраните ваш файл Python. Затем запустите его на Raspberry Pi. Выполните следующую команду в каталоге вашего файла проекта (используйте имя вашего файла):

python blinking_led.py

Светодиод, подключённый к GPIO 14, должен мигать.

Raspberry Pi — светодиод мигает, включён Raspberry Pi — светодиод мигает, выключен

Вы можете остановить выполнение программы, нажав CTRL + C.

Другие полезные методы

Интерфейсы LED и DigitalOutputDevice предоставляют другие полезные дополнительные методы.

toggle()

Метод toggle() меняет текущее состояние GPIO на противоположное. Вот альтернативный скрипт для мигания светодиодом с использованием метода toggle().

# Complete Project Details: https://RandomNerdTutorials.com/projects-raspberry-pi/

from gpiozero import LED
from time import sleep

led = LED(14)

# blinking an LED forever
while True:
  led.toggle()
  sleep(1)

Просмотреть исходный код

Заключение

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

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

Вы можете ознакомиться со всеми нашими проектами для Raspberry Pi по следующей ссылке: