From 643c8bcd396b07429907bce50c837b7868b3a337 Mon Sep 17 00:00:00 2001 From: ladyada Date: Mon, 14 May 2018 20:07:56 -0400 Subject: [PATCH] xylophones are WOOD, this is a METALLOPHONE!!! --- Crickits/metallobot/code.py | 70 +++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Crickits/metallobot/code.py diff --git a/Crickits/metallobot/code.py b/Crickits/metallobot/code.py new file mode 100644 index 000000000..754461065 --- /dev/null +++ b/Crickits/metallobot/code.py @@ -0,0 +1,70 @@ +# CircuitPython 3.0 CRICKIT demo +from digitalio import DigitalInOut, Direction, Pull +from adafruit_seesaw.seesaw import Seesaw +from adafruit_seesaw.pwmout import PWMOut +from adafruit_motor import servo, motor +from busio import I2C +import board +import time +import gc + +i2c = I2C(board.SCL, board.SDA) +ss = Seesaw(i2c) + +print("Crickit demo!") + +# use the CPX onboard switch to turn on/off (helps calibrate) +switch = DigitalInOut(board.SLIDE_SWITCH) +switch.direction = Direction.INPUT +switch.pull = Pull.UP + +#################### 4 Servos +servos = [] +for ss_pin in (17, 16, 15, 14): + pwm = PWMOut(ss, ss_pin) + pwm.frequency = 50 + _servo = servo.Servo(pwm) + _servo.angle = 90 # starting angle, middle + servos.append(_servo) + +#################### 2 DC motors +motors = [] +for ss_pin in ((22, 23), (18, 19)): + pwm0 = PWMOut(ss, ss_pin[0]) + pwm1 = PWMOut(ss, ss_pin[1]) + _motor = motor.DCMotor(pwm0, pwm1) + motors.append(_motor) + +servos[0].angle = 180 + +while True: + if switch.value: + # Switch is on, activate MUSIC POWER! + + # motor forward slowly + motors[0].throttle = 0.2 + # mote the head forward slowly, over 0.9 seconds + for a in range(180, 90, -1): + servos[0].angle = a + time.sleep(0.01) + + # motor stop + motors[0].throttle = 0 + time.sleep(1) + + # motor backwards slowly + motors[0].throttle = -0.2 + # move the head back slowly too, over 0.9 seconds + for a in range(90, 180): + servos[0].angle = a + time.sleep(0.01) + # calibration! its a *tiny* bit slower going back so give it a few ms + time.sleep(0.007) + + # motor stop + motors[0].throttle = 0 + time.sleep(1) + else: + # switch is 'off' so dont do anything! + pass +