Raspberry Pi: первое знакомство. Урок 4. Работа с GPIO, мигание светодиодом, Python

Конструкторы для обучения детей робототехнике

Share Button

Продолжаем серию уроков-инструкций по Raspberry Pi: для начинающих

Сегодня четвертый урок, на котором мы поработаем с портами GPIO, в частности помигаем светодиодом в разных режимах. 

Урок ориентирован на начинающих пользователей и представлен в текстовом и видео-форматах.

Видео четвертого урока:

Также рекомендуем ознакомиться с:

Для урока нам понадобится:

  • плата Raspberry Pi;
  • кабель питания;
  • USB-клавиатура;
  • USB-мышь;
  • монитор или телевизор с HDMI/RCA/DVI интерфейсом;
  • кабель, один конец которого RCA или HDMI, а другой соответствует вашему монитору;
  • SD-карта с уже установленной ОС Raspbian (как ее установить);
  • светодиод;
  • кнопка;
  • резистор на 220 Ом
  • 3 провода «мама-папа»
  • 2 провода «папа-папа».

DSC_0003

Программирование Raspberry Pi GPIO на языке Python

Для сегодняшнего урока мы выбрали язык программирования Python.

Python — современный объектно-ориентированный язык. Он наиболее часто используется для программирования GPIO на Raspberry Pi. Python входит в состав операционной системы Raspbian.

Сборка модели

Для работы нам потребуется собрать следующую схему:

схема_bb

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

Обратите внимание, что порты GPIO на Raspberry Pi не подписаны, полезно иметь распечатанную распиновку.

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

Распиновка Raspberry Pi. Схема с ledgerlabs.us

модель

Собранная модель со светодиодом и кнопкой

Управление светодиодом на Raspberry Pi из консоли

Заходим в LXTerminal и набираем:

sudo python

После этого вместо имени пользователя в начале строки должно отобразиться >>>.

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

import RPi.GPIO as GPIO  #импорт библиотеки
GPIO.setmode(GPIO.BOARD) #"включение" GPIO
GPIO.setup(7, GPIO.OUT)  #объявление 7-го пина как выход

Затем для включения светодиода можно использовать команду
GPIO.output(7, 1)

А для выключения
GPIO(output(7, 0)

После работы с GPIO желательно выполнить команду
GPIO.cleanup()

Программа для мигания светодиодом на Raspberry Pi

Для автономной работы светодиода нам потребуется написать и запустить программу. Для этого откроем предустановленную программу IDLE 3 и в меню File нажмем New. В открывшемся окне мы можем писать программу.

Напишем:
import RPi.GPIO as GPIO    #импорт библиотеки для работы с GPIO
import time                #импорт библиотеки для ожидания
GPIO.setmode(GPIO.BOARD)   #"запуск" GPIO
GPIO.setup(7, GPIO.OUT)    #объявление порта 7 как выход
while True:                #бесконечный цикл
____GPIO.output(7, 1)      #включение светодиода
____time.sleep(1)          #ожидание 1 секунды
____GPIO.output(7, 0)      #выключение светодиода
____time.sleep(1)          #ожидание 1 секунды

Сохраним программу в папке /home/pi.

Теперь мы можем запустить программу из LXTerminal с помощью команды
sudo python programname.py

Управление светодиодом с помощью кнопки

Поуправляем светодиодом с помощью внешней кнопки: когда кнопка зажата — светодиод горит, когда отжата — не горит.

Для этого подключим кнопку к порту 5.

Для управления нам потребуется следующая программа:

import RPi.GPIO as GPIO         #импорт библиотеки GPIO
GPIO.setmode(GPIO.BOARD)        #"включение GPIO"
GPIO.setup(7, GPIO.OUT)         #объявление порта 7 как выход
GPIO.setup(3, GPIO.IN)          #объявление порта 3 как вход
while True:                     #бесконечный цикл
____if GPIO.input(3) == False:  #если кнопка зажата
________GPIO.output(7, 1)       #включаем светодиод
____else:                       #иначе
________GPIO.output(7, 0)       #выключаем

Управление светодиодом с клавиатуры

Сделаем еще одну программу. Она будет менять состояние светодиода при получении пустой строки и заканчиваться при получении другой строки.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
while True:
____str = input("Enter - включение, другое - выход ");
____if str != "":
________break
____else:
________GPIO.output(7, 1)
____str = input("Enter - выключение, другое - выход ");
____if str != "":
________break
____else:
________GPIO.output(7, 0)
GPIO.cleanup()

На этом четвертый урок по Raspberry Pi для начинающих закончен, продолжение следует!

Все уроки курса «Raspberry Pi: первое знакомство»

Урок 1: Устройство и установка ОС на Raspberry Pi.

Урок 2: Интернет, программы из Pi Store и LibreOffice.

Урок 3: Консоль, утилита apt-get, скриншоты, удаленное управление.

Урок 4: Работа с GPIO, мигание светодиодом, Python.

Где купить Raspberry Pi

Raspberry Pi и наборы с ней можно купить у официальных дилеров и их партнеров и в многочисленных интернет-магазинах. Наиболее привлекательные цены, постоянные спецпредложения и бесплатная доставка на сайтах китайских магазинов AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазин Амперка.

Будьте аккуратны при выборе – в продаже имеются разные модели A, A+, B, B+Raspberry Pi 2 и Raspberry Pi Zero.

Курс будет пополняться дополнительными уроками. Подпишитесь на нас ВКонтакте или Facebook, чтобы быть в курсе обновлений.

Автор: Александр А. Гагарин

Share Button

26 комментариев к статье “Raspberry Pi: первое знакомство. Урок 4. Работа с GPIO, мигание светодиодом, Python”

  1. сергей

    10.07.2014

    Какую работу выполняет резистор в этой схеме? Везде ставят его, но назначение его толкуют смутно.

    Ответить на этот комментарий
    • Алексей

      11.07.2014

      все верно без резистора светодиоды не надо подключать I = U / R. 5 вольт / 220 ом = 0,022 ампер — нормальный ток для светодиода.

      Ответить на этот комментарий
  2. Dimon

    23.08.2014

    Сопротивление в цепи нужно снизить, иначе диоду долго не протянуть — нагреется и кирдык…

    Ответить на этот комментарий
  3. Александр

    11.01.2015

    вот мы программу запустили командой: sudo python programname.py, а как остановить ?

    Ответить на этот комментарий
    • Занимательная робототехника

      14.01.2015

      Программа останавливается, когда вы закрываете LXTerminal. Также можно приостановить программу нажатием Ctrl+C.

      Ответить на этот комментарий
  4. EvGen

    14.02.2015

    Скажите, а будут еще уроки? И если будут, то когда?

    Ответить на этот комментарий
    • Занимательная робототехника

      16.02.2015

      Добрый день, да, уроки «Raspberry Pi для начинающих» еще будут. Объем и сроки выхода пока точно не определены.

      Ответить на этот комментарий
  5. Михаил

    08.03.2015

    Скажите,а вот такая ситуация: Мне нужно при нажатии кнопки эмулировать кнопку клавиатуры Esc. Что мне нужно написать?

    Ответить на этот комментарий
  6. Михаил

    09.03.2015

    А для python и по понятнее есть?

    Ответить на этот комментарий
  7. Максим

    17.05.2015

    [quote]Управление светодиодом с помощью кнопки

    Для этого подключим кнопку к порту 5.[/quote]

    Для каких целей подключать кнопку к порту №5. Если в коде указано что выход осуществляется через 3-й порт?

    Ответить на этот комментарий
    • Занимательная робототехника

      17.05.2015

      На 5-ом пине находится порт GPIO3 (это видно на схеме распиновки, рисунок выше)

      Ответить на этот комментарий
      • styreyhber

        29.01.2016

        вы вводите людей в заблуждение, не путайте пины и порты

        Для этого подключим кнопку к порту 5
        GPIO.setup(7, GPIO.OUT) #объявление порта 7 как выход
        GPIO.setup(3, GPIO.IN) #объявление порта 3 как вход

        # for GPIO numbering, choose BCM
        GPIO.setmode(GPIO.BCM)
        # or, for pin numbering, choose BOARD
        GPIO.setmode(GPIO.BOARD)

        у вас объявлено BOARD значит называйте пинами, выводами, но не портами

        Ответить на этот комментарий
  8. AlexG

    25.05.2015

    Здравствуйте!
    подскажите как реализовать Web-кнопку управления контактом GPIO (например gpio7), чтобы пока нажата мышкой кнопка светодиод включался, а при отпускании web-кнопки светодиод отключался ?

    Ответить на этот комментарий
  9. Egor_Bugor

    15.12.2015

    Здравствуйте !
    Подскажите полное название проводов мама-папа в данном случае .

    Ответить на этот комментарий
  10. Занимательная робототехника

    15.12.2015

    Провода со штырьками с одной стороны и мама-контактами с другой….
    пучок проводов 20 штук в Амперке
    Можно купить с доставкой из Китая по почте:
    пучок проводов 40 штук

    Ответить на этот комментарий
  11. Сергей

    12.10.2016

    Здравствуйте.
    Подскажите пожалуйста, после выполнения программы, например с миганием, завершаю ее ctrl+c либо закрываю терминал. При этом выполнение программы не останавливается, светодиод продолжает мигать. Как решить эту проблему?

    Ответить на этот комментарий
  12. Денис

    18.09.2017

    Кнопку на прямую подключать нельзя. Нужен или резистор ставить или использовать внутренний подтягивающий резистор командой:
    пример: GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_UP).

    Ответить на этот комментарий
  13. Алексей

    28.09.2017

    Здравствуйте собираюсь использовать платку для управлением иллюминацией , допустим написал программу запустил. Как сделать чтобы программа автоматически запускалась при подаче питания?

    Ответить на этот комментарий
  14. Алексей

    28.09.2017

    хочу использовать raspberry-pi для создания новогодней иллюминации . Можно ли написать программку управления выходами , чтобы она затем сама запускалась при включении питания без каких либо манипуляций ?

    Ответить на этот комментарий
    • Занимательная робототехника

      29.09.2017

      Для вашей цели лучше использовать Arduino. И плата дешевле, и при выключении/включении питания нужный вам эффект. Raspberry Pi — компьютер, а не микроконтроллер и требуется загрузка операционной системы. Читайте также статью-сравнение Arduino и Raspberry Pi.

      Ответить на этот комментарий
      • Алексей

        02.10.2017

        Статью прочитал. Спасибо. И тем не менее малина пи у меня уже есть в руках. Можно ли написав программу мигания светодиодов настроить автозапуск чтобы плата грузила ОС и работала автономно.без клавиатуры и настройки.

        Ответить на этот комментарий
        • Занимательная робототехника

          03.10.2017

          В отличие от Arduino, Raspberry Pi необходимо настроить для автоматического запуска программы. Необходимо включить программу в автозагрузку операционной системы.

          Это можно сделать, например, так:
          Сохраним программу в виде файла svetofor-rpi.py3 в корневом каталоге пользователя /home/pi.
          Запустим терминал и после приглашения Pi@raspberrypi:~ $ наберем строку: gksudo leafpad /etc/xdg/autostart/Svetofor.desktop.
          Это вызов текстового редактора leafpad и создание файла Svetofor.desktop в папке автозапуска.
          В текстовом редакторе набираем:

          [Desktop Entry]
          Version=1.0
          Encoding=UTF-8
          Name=Svetofor
          Comment=
          Exec=sudo python /home/pi/svetofor-rpi.py3
          Terminal=false
          Type=Application

          Сохраняем файл.
          Основное здесь – строка, начинающаяся с Exec, которая запускает интерпретатор Python на выполнение программы svetofor-rpi.py3.

          Ответить на этот комментарий

Оставить комментарий

© 2014-2017 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено. Политика кофиденциальности. Соглашение об обработке персональных данных.
Наверх