Skip to content
Snippets Groups Projects

merging master and main

Merged Noah Dodd requested to merge master into main
1 file
+ 95
0
Compare changes
  • Side-by-side
  • Inline
reversing.py 0 → 100644
+ 95
0
"""
/***************************************************************************
* Sketch Name: Lab1_code1
* Description: Arduino - Grove_Pi_Sensors
* Parameters: PIR, Light, Button, LED
* Return: Dark, Light, Movement, Watching
* Copyright: Following code is written for educational purposes by Cardiff University.
* Latest Version: 04/08/2021 (by Hakan KAYAN)
* Modified from: https://github.com/DexterInd/GrovePi.git
***************************************************************************/
"""
import time
import sys
import grovepi
import cv2
# Connect the Grove Buzzer to digital port D8
# SIG,NC,VCC,GND
buzzer = 8
grovepi.pinMode(buzzer, "OUTPUT")
# Connect the Grove Ultrasonic Ranger to digital port D3
ultrasonic_ranger = 3
# Initialize the camera
camera = cv2.VideoCapture(0)
def draw_lines(img, color):
height, width = img.shape[:2]
midpoint = width // 2
cv2.line(img, (midpoint - 100, 0), (midpoint - 100, height), color, 5)
cv2.line(img, (midpoint + 100, 0), (midpoint + 100, height), color, 5)
return img
last_distance = None
no_reading_start_time = None
while True:
try:
# Read distance
distance = grovepi.ultrasonicRead(ultrasonic_ranger)
sys.stdout.write("The distance is \\r%d" %distance)
ret, frame = camera.read()
if not ret:
print("Failed to grab frame")
break
if distance is None or distance > 30:
grovepi.digitalWrite(buzzer, 0)
time.sleep(1)
if no_reading_start_time is None:
no_reading_start_time = time.time()
elif time.time() - no_reading_start_time > 6:
cv2.destroyAllWindows()
no_reading_start_time = None
else:
no_reading_start_time = None
if last_distance is None or not (21 <= last_distance <= 30):
if 0 <= distance <= 9:
frame = draw_lines(frame, (0, 0, 255)) # Red lines
elif 10 <= distance <= 20:
frame = draw_lines(frame, (0, 255, 255)) # Yellow lines
elif 21 <= distance <= 30:
frame = draw_lines(frame, (0, 255, 0)) # Green lines
if 0 <= distance <= 9:
# Beep at 5 Hz (5 beeps per second)
grovepi.digitalWrite(buzzer, 1)
time.sleep(0.1) # on for 0.1 seconds
grovepi.digitalWrite(buzzer, 0)
time.sleep(0.1) # off for 0.1 seconds
elif 10 <= distance <= 20:
# Beep at 3 Hz (3 beeps per second)
grovepi.digitalWrite(buzzer, 1)
time.sleep(0.167) # on for 0.167 seconds
grovepi.digitalWrite(buzzer, 0)
time.sleep(0.167) # off for 0.167 seconds
elif 21 <= distance <= 30:
# Beep at 1 Hz (1 beep per second)
grovepi.digitalWrite(buzzer, 1)
time.sleep(0.5) # on for 0.5 seconds
grovepi.digitalWrite(buzzer, 0)
time.sleep(0.5) # off for 0.5 seconds
last_distance = distance
cv2.imshow('Camera View', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except KeyboardInterrupt:
grovepi.digitalWrite(buzzer, 0)
break
except IOError:
print ("Error")
camera.release()
cv2.destroyAllWindows()
\ No newline at end of file
Loading