Первая программа на Python для Raspberry Pi
В данном уроке мы разберём, как использовать Python на Raspberry Pi, выведем «Hello World» на экран, заставим светодиод мигать и попробуем ШИМ.
Python в Raspberry Pi
Python — это высокоуровневый язык программирования, разработанный Гвидо ван Россумом в 1991 году. Питон, как его часто называют разработчики, представляет собой полноценный язык программирования, подобно C++, C#, Java и другим языкам.
Он отличается простотой использования и лаконичным синтаксисом, при этом оставаясь мощным инструментом, с помощью которого разрабатывают практически всё — от веб-сайтов до мобильных приложений, работы с big data и искусственным интеллектом.
Python является самым популярным и широко применяемым языком программирования для Raspberry Pi. Если вы ещё не читали, рекомендуем ознакомиться с нашим материалом Введение в язык программирования Python.
Давайте запустим Python и начнём работу. Для запуска Python на Raspberry Pi выполните следующие действия.
Откройте Menu (Меню), перейдите в раздел Programming (Программирование) и выберите Python 3.
Перед вами появится экран с курсором. Это окно называется консолью или терминалом.
Hello World
Введите следующую строку в консоль и нажмите Enter:
print("Hello World!")
Пример вывода:
На экране отобразится «Привет, мир!» (на изображении текст выведен синим цветом). Поздравляем — вы только что выполнили свою первую команду на Python.
Двигаемся дальше, и если у вас имеется светодиод для Raspberry Pi, мы напишем простой код, чтобы он начал мигать или плавно затухать.
Мигаем светодиодом с помощью Python
Для начала необходимо подключить светодиод к Raspberry Pi по схеме, представленной ниже:
Теперь откройте редактор Python IDLE (как описано выше) и создайте новое окно (CTRL+N).
Введите приведённый ниже код и сохраните файл:
import RPi.GPIO as GPIO
import time
# функция мигания
def blink(pin):
GPIO.output(pin,GPIO.HIGH)
time.sleep(1)
GPIO.output(pin,GPIO.LOW)
time.sleep(1)
return
# использовать номер пина Raspberry Pi
GPIO.setmode(GPIO.BOARD)
# настройка выхода GPIO
GPIO.setup(11, GPIO.OUT)
# мигать GPIO17 50 раз
for i in range(0,50):
blink(11)
GPIO.cleanup()
Сохраните файл и выполните его, нажав F5. Светодиод должен начать мигать.
Поздравляем — вы создали свой первый аппаратный проект на Raspberry Pi. Теперь давайте используем Широтно-Импульсную Модуляцию (ШИМ), чтобы реализовать плавное затухание светодиода.
Применение ШИМ
ШИМ, или широтно-импульсная модуляция (англ. — PWM, Pulse Width Modulation), представляет собой разновидность цифрового сигнала. Цифровой сигнал имеет лишь два возможных состояния: ВКЛ или ВЫКЛ, 0 или 1, а в нашем случае — 0 или 5 вольт.
Именно поэтому для мигания светодиода ШИМ не требовался — светодиод просто переключался между включённым и выключенным состояниями. В ШИМ-сигналах оба состояния могут сочетаться в пределах заданного временного интервала.
Если вы занимаетесь Ардуино, рекомендуем прочитать про Широтно-импульсную модуляцию в Ардуино.
Допустим, вам нужно управлять яркостью светодиода. Один из подходов заключается в том, чтобы включать светодиод на короткий промежуток времени, а затем снова выключать его на столь же короткий период.
Таким образом, при очень высокой частоте переключений между включением и выключением создаётся визуальный эффект плавного затухания светодиода. Обратите внимание на рисунок ниже.
Чем шире прямоугольный импульс, тем ярче горит светодиод.
Схема соединения
Соедините Raspberry Pi и светодиод в соответствии со схемой ниже. Светодиод подключается к GPIO19.
Код Python
Собрав схему, откройте Python 3 и нажмите CTRL+N для создания нового окна. Вставьте приведённый ниже код:
import RPi.GPIO as IO
import time
IO.setwarnings(False)
IO.setmode (IO.BCM)
# инициализация GPIO19 как выход
IO.setup(19,IO.OUT)
# частота 100Hz
p = IO.PWM(19,100)
p.start(0)
while 1:
for x in range (50):
p.ChangeDutyCycle(x)
time.sleep(0.1)
for x in range (50):
p.ChangeDutyCycle(50-x)
time.sleep(0.1)
После запуска программы ваш светодиод будет плавно менять яркость от максимальной до минимальной.
Поздравляем — второй проект на Python и Raspberry Pi завершён.