def measure_distance(trig_pin, echo_pin, num_readings=5): distances = [] for _ in range(num_readings): GPIO.output(trig_pin, True) time.sleep(0.00001) GPIO.output(trig_pin, False) pulse_start = time.time() pulse_end = time.time() while GPIO.input(echo_pin) == 0: pulse_start = time.time() while GPIO.input(echo_pin) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 # Speed of sound = 34300 cm/s distances.append(distance) avg_distance = sum(distances) / num_readings return avg_distance import RPi.GPIO as GPIO import time import pygame # ... (rest of the code remains the same) try: people_inside = 0 # Counter for people inside the room entry_cooldown = False # Flag to prevent rapid multiple entries while True: enter_distance = measure_distance(ENTER_TRIG_PIN, ENTER_ECHO_PIN, num_readings=5) exit_distance = measure_distance(EXIT_TRIG_PIN, EXIT_ECHO_PIN, num_readings=5) # Detecting if someone is within 30 cm range if enter_distance < 30 and not entry_cooldown: people_inside += 1 entry_cooldown = True time.sleep(2) # Cooldown period, adjust as needed if exit_distance < 30 and people_inside > 0: people_inside -= 1 if people_inside > 0: play_audio() control_led_strip(GPIO.HIGH) else: stop_audio() control_led_strip(GPIO.LOW) if not (enter_distance < 30): entry_cooldown = False except KeyboardInterrupt: GPIO.cleanup() pygame.mixer.quit()