Birdzap: verjaag vogels uit je kersenboom
#---------------------------------------------------------------------- # # 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