ボタンを押したときにリレーをオン/オフするコードを書きました。私がボタンを一度押すと、すべてが世界で正しいです。最初のプレスでリレーがオンになり、2番目のプレスでオフになります。私の問題は、ボタンを押したままにすると、リレーがただちにオン/オフすることですボタンが押されるまでオン/オフします。これは望ましい結果ではありません。私はリレーが一度押すごとに一度オンにしたいだけです。私は私の望ましい結果を達成するために、このコードを変更するにはどうすればよいPython RPi.GPIOボタンはリレーを有効にします - ボタンのホールドに対処する必要があります
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
# GPIO.setwarnings(False)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.OUT)
print "GPIO STATE OF PIN 17"
print GPIO.input(17)
print "GPIO STATE OF PIN 22"
print GPIO.input(22)
# MAKE SURE SOLENOID IS OFF
solenoid = "OFF"
GPIO.output(17,True)
print "Push button to open and close solenoid."
while True:
input_state = GPIO.input(22)
if input_state == False and solenoid == "ON":
print('SOLENOID OFF')
solenoid = "OFF"
GPIO.output(17,True)
time.sleep(0.2)
elif input_state == False and solenoid == "OFF":
print('SOLENOID ON')
solenoid = "ON"
GPIO.output(17,False)
time.sleep(0.2)
:
は、ここに私のコードです。
ベスト、
ブライアン
'input_state'は物理的に何を表していますか?ボタンが押されていますか? – tknickman