Raspberry Pi Pico: управление цифровыми выходами и чтение цифровых входов (MicroPython)
Узнайте, как настроить GPIO Raspberry Pi Pico в качестве цифровых входов и цифровых выходов с помощью прошивки MicroPython. В качестве примера вы научитесь считывать состояние кнопки и включать светодиод соответствующим образом. С помощью этого простого примера вы узнаете, как считывать любой цифровой вход и управлять любым цифровым выходом.
У нас есть аналогичное руководство с использованием Arduino IDE: Raspberry Pi Pico: Control Digital Outputs and Read Digital Inputs (Arduino IDE).
Предварительные требования
Для выполнения этого руководства вам необходимо установить прошивку MicroPython на вашу плату Raspberry Pi Pico. Вам также понадобится IDE для написания и загрузки кода на плату.
Рекомендуемая IDE для MicroPython на Raspberry Pi Pico — это Thonny IDE. Следуйте приведённому ниже руководству, чтобы узнать, как установить Thonny IDE, прошить прошивку MicroPython и загрузить код на плату.
Обзор проекта
Чтобы показать вам, как использовать цифровые входы и цифровые выходы, мы создадим простой пример проекта с кнопкой и светодиодом. Мы будем считывать состояние кнопки и включать светодиод соответствующим образом, как показано на следующем рисунке.
GPIO Raspberry Pi Pico
Raspberry Pi Pico оснащён 40 контактами, 26 из которых являются программируемыми GPIO, которые можно использовать для подключения периферийных устройств.
Вы можете использовать следующие схемы распиновки в качестве справки для определения и нахождения каждого GPIO на вашей плате. Распиновка немного отличается для Pico и Pico W.
На следующей картинке показана распиновка Raspberry Pi Pico (какие функции поддерживает каждый контакт).
Источник изображения: raspberrypi.com
Контакты, отмеченные красным — это контакты питания, выдающие 3,3 В. Чёрные контакты — это контакты GND. Все контакты, отмеченные светло-зелёным, можно использовать как «обычные» GPIO (вход и выход).
Цифровые входы
Чтобы получить значение GPIO, сначала необходимо создать объект Pin и установить его как вход. Например:
button = Pin(21, Pin.IN)
Это создаёт объект Pin с именем button на GPIO 21. Таким образом, когда вы используете эту строку кода, вы сообщаете своей программе, что GPIO 21 должен работать как вход (Pin.IN).
У вас также есть возможность указать входам использовать внутренний подтягивающий (pull-up) или стягивающий (pull-down) резистор микроконтроллера. Для кнопки полезно использовать внутренний стягивающий резистор. Для этого вы можете добавить третий параметр в конструктор Pin() (PULL_DOWN).
button = Pin(21, Pin.IN, Pin.PULL_DOWN)
В зависимости от того, как вы подключаете кнопку, вы можете захотеть использовать внутренний подтягивающий резистор, в этом случае:
button = Pin(21, Pin.IN, Pin.PULL_UP)
После объявления контакта как входа, чтобы получить его значение, необходимо использовать метод value() для объекта Pin без передачи каких-либо аргументов. Например, чтобы получить состояние объекта Pin с именем button, используйте следующее выражение:
button.value()
Мы покажем вам более подробно, как всё работает, в примере проекта.
Цифровые выходы
Чтобы установить GPIO в состояние включено или выключено, сначала необходимо установить его как выход. Например:
led = Pin(20, Pin.OUT)
Это создаёт объект Pin с именем led на GPIO 20. Таким образом, когда вы используете эту строку кода, вы сообщаете своей программе, что GPIO 20 должен работать как выход (Pin.OUT).
Для управления GPIO используйте метод value() для объекта Pin и передайте 1 или 0 в качестве аргумента. Например, следующая команда устанавливает объект Pin (led) в состояние HIGH — включает светодиод:
led.value(1)
Чтобы установить GPIO в состояние LOW, передайте 0 в качестве аргумента — выключает светодиод:
led.value(0)
Схема подключения
Прежде чем продолжить, вам необходимо собрать схему со светодиодом и кнопкой. Мы подключим светодиод к GPIO 20, а кнопку — к GPIO 21.
Необходимые компоненты
Вот список компонентов, необходимых для сборки схемы:
Raspberry Pi Pico
Светодиод 5 мм
Резистор 330 Ом
Кнопка (тактовая)
Резистор 10 кОм
Макетная плата
Соединительные провода
Схема — Raspberry Pi Pico
Вы можете использовать следующую диаграмму в качестве справки для подключения кнопки и светодиода к плате Raspberry Pi Pico.
Скрипт
Следующий код считывает состояние кнопки и включает светодиод соответствующим образом.
from machine import Pin
from time import sleep
led = Pin(20, Pin.OUT)
button = Pin(21, Pin.IN, Pin.PULL_DOWN)
while True:
led.value(button.value())
sleep(0.1)
print(button.value())
Как работает код
Вы начинаете с импорта класса Pin из модуля machine и класса sleep из модуля time.
from machine import Pin
from time import sleep
Затем создаёте объект Pin с именем led на GPIO 20. Светодиоды являются выходами, поэтому передайте в качестве второго аргумента Pin.OUT.
led = Pin(20, Pin.OUT)
Мы также создаём объект с именем button на GPIO 21. Кнопки являются входами, и мы хотим использовать внутренний стягивающий резистор, поэтому объявляем его следующим образом.
button = Pin(21, Pin.IN, Pin.PULL_DOWN)
Используйте button.value() для возврата/чтения состояния кнопки. Затем передайте выражение button.value() в качестве аргумента для значения светодиода.
led.value(button.value())
Таким образом, когда мы нажимаем кнопку, button.value() возвращает 1. Это то же самое, что led.value(1).
Это устанавливает состояние светодиода в 1, включая светодиод. Когда кнопка не нажата, button.value() возвращает 0. Таким образом, мы получаем led.value(0), и светодиод остаётся выключенным.
Демонстрация
Сохраните код на плату Raspberry Pi Pico с помощью Thonny IDE или любой другой IDE для MicroPython на ваш выбор.
Следуйте приведённым ниже инструкциям, если вы используете Thonny IDE.
Скопируйте предоставленный код в пустой файл Thonny IDE.
После копирования кода в файл нажмите на значок Сохранить. Затем выберите Raspberry Pi Pico.
Сохраните файл с именем: main.py. Перезапишите существующие файлы с таким же именем.
Примечание: когда вы называете файл main.py, Raspberry Pi Pico будет автоматически запускать этот файл при загрузке. Если вы назовёте его другим именем, он всё равно будет сохранён в файловой системе платы, но не будет запускаться автоматически при загрузке.
Перезагрузите плату (отключите и подключите её к компьютеру).
После этого светодиод должен загораться при нажатии на кнопку и оставаться выключенным, когда вы её отпускаете.
Заключение
Подводя итог, для чтения значения GPIO нам просто нужно использовать метод value() для соответствующего объекта Pin. Для установки значения GPIO нам нужно передать в качестве аргумента 1 или 0 в метод value(), чтобы включить или выключить его соответственно.
Мы надеемся, что это руководство было для вас полезным. Если вы только начинаете работу с Raspberry Pi Pico, обязательно ознакомьтесь с нашим руководством по началу работы:
Если вы предпочитаете программировать Raspberry Pi Pico с помощью Arduino IDE, вы можете начать со следующего руководства:
Вы можете ознакомиться со всеми нашими руководствами и проектами для Raspberry Pi Pico по следующей ссылке: