Точнее говоря, есть два способа.

Способ-1. Код в стиле Arduino.

import RPi.GPIO as GPIO

import time

btn_pin = 24 # Button to GPIO24

# Setup

GPIO.setmode(GPIO.BCM)

GPIO.setup(btn_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

try:

# Loop

while True:

button_state = GPIO.input(btn_pin)

if button_state == False:

print 'Button Pressed...'

time.sleep(0.2)

except:

GPIO.cleanup()

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

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

Гораздо правильнее “подписаться” на системные уведомления об изменении состояния кнопки, тогда код автоматически вызовется когда нужно.

Способ-2. Код с использованием событий (events).

import RPi.GPIO as GPIO

import time

btn_pin = 24 # Button to GPIO24

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату