инвертировать вход GPIO - PullRequest
0 голосов
/ 30 января 2019

Это мой код для запуска другого моего кода, где я определил свой лазер для запуска.Но в этом коде я хочу иметь кнопку, которая запускает другой мой скрипт, если я нажму на него.Но этот код активирует мой код непрерывно.Что я могу изменить в нем?

#!/usr/bin/env python

import RPi.GPIO as GPIO
import time
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
#GPIO.setmode(GPIO.BOARD)
GPIO.setup(15,GPIO.IN) #GPIO17

#input = GPIO.input(27)
#print ("input",input)

while True :
    #inputValue = GPIO.input(11)
    #print ("input01",inputValue)
    #time.sleep(1)
    erg= GPIO.wait_for_edge(15,GPIO.RISING, bouncetime=20)
    print ("Input",2)
    #if (GPIO.input(11) == GPIO.HIGH):
    #if erg==15:
    print ("Input",1)
    time.sleep(3)
    #inputValue = 1
    os.system("python /home/pi/gpio.py")

1 Ответ

0 голосов
/ 30 января 2019

Когда вы запускаете os.system('python /home/pi/gpio.py'), вы запускаете новый процесс, и ваш основной процесс возвращается к работе в цикле while.

Как я понял, ваша идея состояла в том, чтобы подождать, пока кнопка не будет нажата, а затем перейти в другое состояние, ожидая, что произойдет что-то новое.Вам не нужно начинать новый процесс, просто импортируйте модуль (doc) .При нажатии кнопки прервите цикл и запустите код из импортированного модуля.

Также вам может быть интересно заменить wait_for_edge методом event_detected.Подробнее об этом здесь .

...