Merge pull request #162 from ladyada/master

beep boop physics!
This commit is contained in:
Limor "Ladyada" Fried 2018-05-13 20:16:33 -04:00 committed by GitHub
commit 0581f4de35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 85 additions and 0 deletions

BIN
Crickits/feynman_bot/01.wav Normal file

Binary file not shown.

BIN
Crickits/feynman_bot/02.wav Normal file

Binary file not shown.

BIN
Crickits/feynman_bot/03.wav Normal file

Binary file not shown.

BIN
Crickits/feynman_bot/04.wav Normal file

Binary file not shown.

BIN
Crickits/feynman_bot/05.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,85 @@
# CircuitPython 3.0 CRICKIT demo
from adafruit_seesaw.seesaw import Seesaw
from adafruit_seesaw.pwmout import PWMOut
from adafruit_motor import servo, motor
import audioio
from busio import I2C
import random
import board
import time
import gc
i2c = I2C(board.SCL, board.SDA)
ss = Seesaw(i2c)
print("Feynbot demo!")
#################### 1 Servo
pwm = PWMOut(ss, 17)
pwm.frequency = 50
myservo = servo.Servo(pwm)
myservo.angle = 180 # starting angle, highest
#################### 2 Drivers
drives = []
for ss_pin in (13, 12):
_pwm = PWMOut(ss, ss_pin)
_pwm.frequency = 1000
drives.append(_pwm)
#################### Audio files
wavfiles = ["01.wav", "02.wav", "03.wav", "04.wav", "05.wav"]
a = audioio.AudioOut(board.A0)
# Start playing the file (in the background)
def play_file(wavfile):
f = open(wavfile, "rb")
wav = audioio.WaveFile(f)
a.play(wav)
# Tap the solenoids back and forth
def bongo(t):
for _ in range(t):
drives[0].duty_cycle = 0xFFFF
time.sleep(0.1)
drives[0].duty_cycle = 0
time.sleep(0.1)
drives[1].duty_cycle = 0xFFFF
time.sleep(0.1)
drives[1].duty_cycle = 0
time.sleep(0.1)
# Move mouth back and forth
def talk(t):
for _ in range(t):
myservo.angle = 150
time.sleep(0.1)
myservo.angle = 180
time.sleep(0.1)
filenum = 0 # counter to play all files
while True:
gc.collect()
print(gc.mem_free())
# time to play the bongos!
bongo(5)
time.sleep(1)
# OK say something insightful
play_file(wavfiles[filenum])
# and move the mouth while it does
while a.playing:
talk(1)
# Done being insightful, take a break
time.sleep(1)
# If we went thru all the files, JAM OUT!
filenum += 1
if filenum >= len(wavfiles):
bongo(20)
filenum = 0