演示源代码
本演示中的资源代码仅作为参考。
edge_detection_with_waiting_time.py:
''' Please make sure the buttion is connected to the correct pins. The following table describes how to connect the button to the 40-pin header. ----------------------------------------- ______button_____Pin Number_____Pin Name one end 37 GPIO60 The other end 39 GND ----------------------------------------- ''' import VisionFive.gpio as GPIO import sys import time key_pin = 37 def main(): # Configure the direction of key_pin as input. GPIO.setup(key_pin, GPIO.IN) print("*-----------------------Case 1-----------------------------------------------------*") print("Note: don't press the key on pin {} once within 5 seconds !!!".format(key_pin)) print() # edge falling can be detected, also set bouncetime(unit: millisecond) to avoid jitter. # timeout(unit: millisecond), it means if edge will be detected within timeout time. # timeout -1 means waiting until edge is detected. edge_detected = GPIO.wait_for_edge(key_pin, GPIO.FALLING, bouncetime=2, timeout=5000) if edge_detected == key_pin: print("Edge has detected within 5 seconds while setting 5 seconds to timeout.") else: print("Edge hasn't been detected within 5 seconds while setting 5 seconds to timeout.") # query if edge event happens. edge_detected_flag = GPIO.event_detected(key_pin) print("The return value of GPIO.event_detected({}) within 5 seconds: {}".format(key_pin, edge_detected_flag)) print() print("*-----------------------Case 2-----------------------------------------------------------------------*") print("Please press the key on pin {} once at any time !!!".format(key_pin)) # edge rising can be detected, also set bouncetime(unit: millisecond) to avoid jitter. # the default timeout is -1, meaning that waiting until edge is detected. edge_detected = GPIO.wait_for_edge(key_pin, GPIO.RISING, bouncetime=2) if edge_detected == key_pin: print("Edge has detected while setting -1 to timeout,") print("timeout -1 means waiting until edge is detected.") else: print("Edge hasn't been detected while setting -1 to timeout,") print("timeout -1 means waiting until edge is detected.") # query if edge event happens. edge_detected_flag = GPIO.event_detected(key_pin) print() print("The return value ({}) of GPIO.event_detected({}) should be True.".format(edge_detected_flag, key_pin)) # query if edge event happens. edge_detected_flag = GPIO.event_detected(key_pin) print("The return value ({}) of GPIO.event_detected({}) should be False, because of the secondly reading.".format(edge_detected_flag, key_pin)) print() if __name__ == "__main__": sys.exit(main())