import RPi.GPIO as GPIO
import time
# Define GPIO Pins
TRIGGER_PIN = 23
ECHO_PIN = 24
LED_PIN = 18
# Setup GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(TRIGGER_PIN, GPIO.OUT)
GPIO.setup(ECHO_PIN, GPIO.IN)
GPIO.setup(LED_PIN, GPIO.OUT)
def measure_distance():
""" Measure distance using HC-SR04 """
GPIO.output(TRIGGER_PIN, False)
time.sleep(0.1)
# Send trigger pulse
GPIO.output(TRIGGER_PIN, True)
time.sleep(0.00001)
GPIO.output(TRIGGER_PIN, False)
# Wait for response
start_time = time.time()
while GPIO.input(ECHO_PIN) == 0:
start_time = time.time()
while GPIO.input(ECHO_PIN) == 1:
end_time = time.time()
# Calculate distance
elapsed_time = end_time - start_time
distance = (elapsed_time * 34300) / 2 # Convert to cm
return distance
try:
while True:
distance = measure_distance()
print(f"Distance: {distance:.2f} cm")
if distance < 10: # Threshold
print("⚠️ Flood Detected! Alert!")
GPIO.output(LED_PIN, GPIO.HIGH)
else:
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
print("Measurement stopped by user")
GPIO.cleanup()