Birdzap: verjaag vogels uit je kersenboom

Gepubliceerd door Robot One op

#----------------------------------------------------------------------
#
#   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
Categorieën: