@dastels, here is my full code snippet if it is helpful:
Code: Select all
import time
import board
import pwmio
from adafruit_dotstar import DotStar
from adafruit_motor import servo
### IMPORTANT: Change to your feeding schedule! ###
feedEveryXHours = 12
###################################################
led = DotStar(board.APA102_SCK, board.APA102_MOSI, 1)
servoPin = pwmio.PWMOut(board.A2, duty_cycle=2 ** 15, frequency=50)
piezoPin = pwmio.PWMOut(board.D2, duty_cycle=0, frequency=440, variable_frequency=True)
feederServo = servo.Servo(servoPin)
feederServo.angle = 0
feedServoIncrement = 12
print('Please load food...')
for t in range(30):
led[0] = (255,255,0)
time.sleep(0.5)
led[0] = (0, 0, 0)
if t > 25:
piezoPin.frequency = 2620;
piezoPin.duty_cycle = 65536 // 2
time.sleep(0.5)
piezoPin.duty_cycle = 0
foodAvailable = True
feeding = 0
led[0] = (0,0,255)
while foodAvailable == True:
for angle in range(feedServoIncrement, 180, feedServoIncrement):
feeding = feeding + 1
print('Feeding:', feeding, '|', 'Feeder angle:', angle)
led[0] = (0,255,0)
feederServo.angle = angle
time.sleep(10)
led[0] = (0,0,255)
time.sleep((feedEveryXHours * 3600) - 10) # Convert hours to seconds and subtract the 10 seconds we slept above
feederServo.angle = 0
foodAvailable = False
print('All out of food!')
led[0] = (255,0,0)
piezoPin.frequency = 2620;
piezoPin.duty_cycle = 65536 // 2
time.sleep(60)
piezoPin.duty_cycle = 0