logo
+7 (951) 999-89-94
428003, г. Чебоксары, ул. Федора Гладкова, д.9, оф.319
06.04.2017

Простые программы. Управление светодиодом кнопкой

Простые программы. Управление светодиодом кнопкой

В прошлом эксперименте мы познакомились с обозначением выводов платы Raspberry Pi, которые называются GPIO. Там же мы научились включать и выключать светодиод.

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

GPIO Zero - это новая библиотека Python, которая обеспечивает простой интерфейс для работы с GPIO. Он устанавливается по умолчанию в Raspbian.

1. Откройте IDLE в главном меню (Menu> Programming> Python 3 (IDLE).

2. Вы можете включать и выключать светодиоды, вводя команды непосредственно в окно интерпретатора Python (оболочки Python). Давайте сделаем это, импортируя библиотеку GPIO Zero. Вам также нужно указать Pi, какой вывод GPIO вы используете - в этом случае используется 17-й контакт. Наберите код:

from gpiozero import LED
led = LED(17)

Нажмите Enter.

3. Чтобы включить светодиодный индикатор, введите следующий код и нажмите Enter:

led.on()

4. Отключить светодиод можно набрав:

led.off()

5. Теперь подключите кнопку к контакту GPIO2 и GND, как показано на рисунке:

 .

6. Создайте новый файл File > New file.

6. Сохраните файл  File > Save под именем gpio_button.py.

7. На этот раз нам понадобится класс Button, и вам надо указать, что кнопка находится на контакте 2. Напишите следующий код в файле:

from gpiozero import Button
button = Button(2)

8. Теперь вы можете заставить вашу программу что-то делать, когда вы нажимаете кнопку. Добавьте следующие строки:

button.wait_for_press()
print('You pushed me')

9. Сохраните с помощью Ctrl + S и запустите код, нажав на F5.
10. После нажатия кнопки появится ваш текст.

Ручное управление светодиодом

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

1. Создайте новый файл, нажав File > New File.

2. Сохраните новый файл, нажав File > Save. Сохраните файл как gpio_control.py.

3. Теперь напишите следующий код:

from gpiozero import LED, Button
from time import sleep

led = LED(17)
button = Button(2)

button.wait_for_press()
led.on()
sleep(3)
led.off()

4. Сохраните и запустите вашу программу. Когда вы будете нажимать на кнопку, светодиод должен загореться на три секунды.

Делаем выключатель

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

from gpiozero import LED, Button
from time import sleep

led = LED(17)
button = Button(2)

while True:
    button.wait_for_press()
    led.toggle()

Метод led.toggle()  переключает светодиод из состояния «включено» в положение «выключено» или «выключено» в положение «включено». Так как это происходит в цикле, светодиод включается и выключается при каждом нажатии кнопки.

2. Можно включать светодиодный индикатор, только когда кнопка удерживается нажатой. С GPIO Zero это легко. Существует два метода класса Button, которые называются when_pressed и when_released. Они не блокируют поток программы.

3. Переделаем код следующим образом:

from gpiozero import LED, Button
from signal import pause

led = LED(17)
button = Button(2)

button.when_pressed = led.on
button.when_released = led.off

pause()

4. Сохраните и запустите программу. Теперь, когда кнопка нажата, загорится светодиод. Когда кнопка будет отпущена, он снова выключится.

Переведено с Raspberry Fundation.

 Содержание методички