#----------------------------------------------------------------------
#
# BIRD ZAPPER v0.1
#
#----------------------------------------------------------------------
import time
import random
from gpiozero import LED
from adafruit_servokit import ServoKit
kit = ServoKit(channels=16)
laser = LED(17)
global lastx
global lasty
# Beweeg de servo's met vertraging naar hun positie X,Y
def moveto(xpos,ypos):
global lastx
global lasty
global maxnum
print(str(lastx) + "," + str(lasty) + " ---> " + str(xpos) + "," + str(ypos))
xnum = abs(xpos - lastx) # aantal stappen x
ynum = abs(ypos - lasty) # aantal stappen y
if (xpos > lastx):
xstep = 1
else:
xstep = -1 # omhoog of omlaag tellen?
if (ypos > lasty):
ystep = 1
else:
ystep = -1
if (ynum > xnum): # bepaal het maximale aantal stappen
maxnum = ynum
else:
maxnum = xnum
print ("Stappen: " + str(maxnum))
for n in range (0,maxnum):
if (lastx != xpos):
lastx += xstep
kit.servo[0].angle = lastx
if (ypos != lasty):
lasty += ystep
kit.servo[4].angle = lasty
time.sleep(0.03) # slaaptijd, bepaalt de snelheid van bewegen
# Start hier
t = 0
lastx = 0
lasty = 0
# Grenswaarden van de servo's vooralsnog handmatig vaststellen
xmax = 160
xmin = 100
ymax = 140
ymin = 100
# Zet de positie op 0,0
kit.servo[0].angle = xmin
kit.servo[4].angle = ymin
print ("BIRDZAPPER v0.1")
print ("---------------")
print ()
print ("Ctrl-C om te stoppen")
print ()
while True:
# Nu gaan we random aan de slag (random x,y en tijd tussen de bewegingen)
xwaarde = random.randint(xmin,xmax)
ywaarde = random.randint(ymin, ymax)
laser.on()
moveto(xwaarde,ywaarde)
laser.off()
time.sleep(random.randint(3,7)) # wacht 3..7 seconden voor de volgende stap