63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Simple polling-based button test for GPIO6
|
|
No edge detection - just polls the pin state
|
|
"""
|
|
|
|
import RPi.GPIO as GPIO
|
|
import time
|
|
import signal
|
|
import sys
|
|
|
|
BUTTON_PIN = 6
|
|
|
|
def signal_handler(signum, frame):
|
|
print("Cleaning up GPIO...")
|
|
GPIO.cleanup()
|
|
sys.exit(0)
|
|
|
|
def main():
|
|
print("Simple Button Test - Polling GPIO6")
|
|
print("Press the button connected to GPIO6 (GND when pressed)")
|
|
print("Press Ctrl+C to exit")
|
|
|
|
# Clean up any existing GPIO setup
|
|
try:
|
|
GPIO.cleanup()
|
|
except:
|
|
pass
|
|
|
|
# Set up GPIO
|
|
GPIO.setmode(GPIO.BCM)
|
|
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
|
|
|
|
# Set up signal handler
|
|
signal.signal(signal.SIGINT, signal_handler)
|
|
signal.signal(signal.SIGTERM, signal_handler)
|
|
|
|
print(f"GPIO{BUTTON_PIN} setup complete. Current state: {GPIO.input(BUTTON_PIN)}")
|
|
print("Monitoring for button presses (1=released, 0=pressed)...")
|
|
|
|
last_state = GPIO.input(BUTTON_PIN)
|
|
button_press_count = 0
|
|
|
|
try:
|
|
while True:
|
|
current_state = GPIO.input(BUTTON_PIN)
|
|
|
|
# Detect falling edge (button press)
|
|
if last_state == 1 and current_state == 0:
|
|
button_press_count += 1
|
|
print(f"Button press #{button_press_count} detected!")
|
|
time.sleep(0.5) # Simple debounce
|
|
|
|
last_state = current_state
|
|
time.sleep(0.01) # Poll every 10ms
|
|
|
|
except KeyboardInterrupt:
|
|
pass
|
|
finally:
|
|
GPIO.cleanup()
|
|
|
|
if __name__ == "__main__":
|
|
main() |