2017-11-16 6 views
0

タイトルで何を言いたいのか分かりませんでしたが、現在ブレッドボード上にあるボタンがクリックされるとオンになるライトの選択を変更しようとしています。コードの正しい判断が正しいにもかかわらず、現在ボタンをクリックしても何もしません。私はまだPython、RaspPiなどで動作する方法を学んでいるので、これは非常にイライラです。明示的True(またはFalse)にブール値を比較するPythonでGPIOボタンがオンになっているライトを変更していない

import RPi.GPIO as GPIO 
import time 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(18, GPIO.IN) #GPIO pin for colour change 
GPIO.setup(20, GPIO.IN) #GPIO for exit 
GPIO.setup(22, GPIO.OUT) #GPIO Pin for red LED 
GPIO.setup(12, GPIO.OUT) #GPIO Pin for blue LED 

colorCheck = 0 

try: 
    while True: 
    if (GPIO.input(18) == True): 

     if (colorCheck < 3): 
      colorCheck = colorCheck + 1; 
     else: 
      colorCheck = 1; 

    if (colorCheck == 1): 
     GPIO.output(12, GPIO.HIGH) 
     GPIO.output(22, GPIO.LOW) 
    elif (colorCheck == 2): 
     GPIO.output(12, GPIO.LOW) 
     GPIO.output(22, GPIO.HIGH) 
    elif (colorCheck == 3): 
     GPIO.output(12, GPIO.HIGH) 
     GPIO.output(22, GPIO.HIGH) 
except KeyboardInterrupt: 
    GPIO.cleanup() 
+0

'time.sleep()でポーズを追加します。 – eyllanesc

+0

@eyllanescどこに行けばよいですか? – TLang

+0

内部は真です。 – eyllanesc

答えて

0

は、ほとんど常に間違いです。その比較の結果はそれ自体ブール値ですが、どうしてそれは何とか使えるのですが、元の値はそれではありませんでしたか?また、広範囲の値を「真実」(非ゼロの数字、空でない文字列やコンテナなど)として扱うPythonの能力を放棄しているので、それは積極的に有害なことがあります。この具体的なケースでは、GPIO.input()の戻り値は実際には整数(0または1)だから、Trueと比較すると、コードがボタンの押下を検出しないことが保証されます。だから、ちょうどif GPIO.input(18):と書いてください。あなたのifのすべてを囲んでいるそれらのカッコは不要です。

+0

ありがとう、私はまだそれが知っている有用なことを学んでいるように。私は今それがすべて修正されている!カッコはちょうど私が推測する習慣です。 – TLang

関連する問題