2017-08-14 3 views
1

私はこのコードを持っています。バスケットボールゲーム(振動センサーとHC-SR04を使ったアーケードスタイルのバスケットボールゲームの一種です。ヒットと得点ショット)。私はいくつかの秒が経過した後にTrueからFalseへのグローバルなブール値の変化を持つ方法を理解しようとしています。Python:数秒後にTrueからFalseへのブール値の変更を行います

ボールがバックボードに当たってゴバールバックボードが真になると、そこからボールがバックボードからネットにバウンスしたかどうかを数秒間真っ直ぐに保ちます。ボールがネットを通過したときにバックボード変数がまだ真の場合、バックボードがオフになっていることを知っていて、他のクールなものの特殊効果を再生することができます。

バックボード変数は、ボールがバックボードに当たったときにTrueに設定されますが、プレイヤーが数秒後にfalseに戻るのではなく、Trueに留まります。ここで

コードです:

import RPi.GPIO as GPIO 
from gpiozero import DistanceSensor 
import pygame 
import time 

ultrasonic = DistanceSensor(echo=17, trigger=4) 
ultrasonic.threshold_distance = 0.3 
pygame.init() 

#Global 
backboard = False 

#GPIO SETUP 

channel = 22 

GPIO.setmode(GPIO.BCM) 

GPIO.setup(channel, GPIO.IN) 

#music 
score = pygame.mixer.Sound('net.wav') 
bb = pygame.mixer.Sound("back.wav") 

def scored(): 
     #the ball went through the net and trigged the HC-SR04 
     global backboard 
     if backboard == True: 
       print("scored") 
       backboard = False 
       score.play() 
       time.sleep(0.75) 
     else: 
       print("scored") 
       score.play() 
       time.sleep(0.75)    

def callback(channel): 
     #the ball hit the backboard and triggered the vibration sensor 
     global backboard 
     if GPIO.input(channel): 
       backboard = True 
       print("backboard") 
       bb.play() 
       time.sleep(0.75) 


GPIO.add_event_detect(channel, GPIO.BOTH, bouncetime=300) # let us know when the pin goes HIGH or LOW 
GPIO.add_event_callback(channel, callback) # assign function to GPIO PIN, Run function on change 
ultrasonic.when_in_range = scored 
+0

あり、私のコードの最後の行にタイプミスだった - ultrasonic.when_in_rangeは= がされている必要があります()を獲得: ultrasonic.when_in_rangeは= .Thisが今 –

答えて

1

私は単純にタイマーオブジェクトを実装するお勧めします。これを実装してみてください:ボールがバックボードを打つたび

from threading import Timer 
import time 

def switchbool(): 
    backboard = false 

t = Timer(3.0, switchbool) #will call the switchbool function after 3 seconds 

は、単に上記の例のようなタイマーオブジェクトを作成します(あなたはバックボード= trueを設定したときに)。

+0

ブリリアント上に補正されて獲得し、それが動作しているようです本当によく! –

関連する問題