Code for the Dune Thumper project
Adding code and sound effect for the Dune Thumper project
This commit is contained in:
parent
fcf40b57e7
commit
6bf3658e54
2 changed files with 59 additions and 0 deletions
59
Dune_Thumper/code.py
Normal file
59
Dune_Thumper/code.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# SPDX-FileCopyrightText: 2023 Liz Clark for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
import time
|
||||
import board
|
||||
import audiocore
|
||||
import audiobusio
|
||||
import audiomixer
|
||||
import pwmio
|
||||
from digitalio import DigitalInOut, Direction, Pull
|
||||
from adafruit_ticks import ticks_ms, ticks_add, ticks_diff
|
||||
from adafruit_motor import servo
|
||||
import adafruit_lis3dh
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
# enable external power pin
|
||||
# provides power to the external components
|
||||
external_power = DigitalInOut(board.EXTERNAL_POWER)
|
||||
external_power.direction = Direction.OUTPUT
|
||||
external_power.value = True
|
||||
|
||||
# i2s playback
|
||||
wave_file = open("dune_thumper_sfx.wav", "rb")
|
||||
wave = audiocore.WaveFile(wave_file)
|
||||
audio = audiobusio.I2SOut(board.I2S_BIT_CLOCK, board.I2S_WORD_SELECT, board.I2S_DATA)
|
||||
mixer = audiomixer.Mixer(voice_count=1, sample_rate=22050, channel_count=1,
|
||||
bits_per_sample=16, samples_signed=True)
|
||||
audio.play(mixer)
|
||||
mixer.voice[0].play(wave, loop=True)
|
||||
mixer.voice[0].level = 0
|
||||
|
||||
# servo control
|
||||
pwm = pwmio.PWMOut(board.EXTERNAL_SERVO, frequency=10)
|
||||
prop_servo = servo.ContinuousServo(pwm)
|
||||
servo_move = False
|
||||
|
||||
i2c = board.I2C()
|
||||
int1 = DigitalInOut(board.ACCELEROMETER_INTERRUPT)
|
||||
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1)
|
||||
lis3dh.range = adafruit_lis3dh.RANGE_2_G
|
||||
|
||||
clock = ticks_ms()
|
||||
prop_time = 4000
|
||||
|
||||
while True:
|
||||
if not servo_move:
|
||||
mixer.voice[0].level = 0.0
|
||||
prop_servo.throttle = 0.0
|
||||
else:
|
||||
prop_servo.throttle = 0.5
|
||||
mixer.voice[0].level = 0.5
|
||||
if ticks_diff(ticks_ms(), clock) >= prop_time:
|
||||
servo_move = False
|
||||
if lis3dh.shake(shake_threshold=20):
|
||||
servo_move = True
|
||||
clock = ticks_ms()
|
||||
clock = ticks_add(clock, prop_time)
|
||||
BIN
Dune_Thumper/dune_thumper_sfx.wav
Normal file
BIN
Dune_Thumper/dune_thumper_sfx.wav
Normal file
Binary file not shown.
Loading…
Reference in a new issue