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

19 комментариев к статье “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 либо закрываю терминал. При этом выполнение программы не останавливается, светодиод продолжает мигать. Как решить эту проблему?

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

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

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