# Stumble Bot, coded in CircuitPython # Using an Adafruit Circuit Playground Express, Crickit, and 2 servos # Dano Wall, Mike Barela for Adafruit Industries, MIT License, May, 2018 # import time from digitalio import DigitalInOut, Direction, Pull from adafruit_seesaw.seesaw import Seesaw from adafruit_seesaw.pwmout import PWMOut from adafruit_motor import servo from busio import I2C import board # Create seesaw object for Circuit Playground Express to talk to Crickit i2c = I2C(board.SCL, board.SDA) seesaw = Seesaw(i2c) led = DigitalInOut(board.D13) # Set up Red LED led.direction = Direction.OUTPUT button_A = DigitalInOut(board.BUTTON_A) # Set up switch A button_A.direction = Direction.INPUT button_A.pull = Pull.DOWN # Create servos list servos = [] for ss_pin in (17, 16): # Only use 2 servos, append , 15, 14 if using 4 pwm = PWMOut(seesaw, ss_pin) pwm.frequency = 50 _servo = servo.Servo(pwm, min_pulse=600, max_pulse=2500) _servo.angle = 90 # starting angle, middle servos.append(_servo) def servo_front(direction): if direction > 0: index = 50 while index <= 90: servos[1].angle = index time.sleep(0.040) index = index + 1 if direction < 0: index = 90 while index >= 50: servos[1].angle = index time.sleep(0.040) index = index - 1 time.sleep(0.002) def servo_back(direction): if direction > 0: index = 65 while index <= 95: servos[0].angle = index time.sleep(0.040) index = index + 3 if direction < 0: index = 95 while index >= 65: servos[0].angle = index time.sleep(0.040) index = index - 3 time.sleep(0.020) print("Its Stumble Bot Time") while True: if button_A.value: # If button A is pressed, start bot led.value = True # Turn on LED 13 to show we're gone! for i in range(5): print("back 1") servo_back(1) time.sleep(0.100) print("front 1") servo_front(1) time.sleep(0.100) print("back 2") servo_back(-1) time.sleep(0.100) print("front 2") servo_front(-1) time.sleep(0.100) led.value = False # end if # end while