Hello,
I’m trying to use the Audio amp and 2 Bigmotors modules and it does not seem to work. They do work separatley but when not when the 3 re pluged-in. Anyone having this problem ?
The Python script freeze just after the module enable.
Thanks for your help !
Olivier
— Here’s the script
from pimoroni_yukon import Yukon
from pimoroni_yukon.modules import BigMotorModule
from pimoroni_yukon.timing import ticks_ms, ticks_add
from motor import MotorCluster
import time
import utime
from pimoroni_yukon import SLOT5 as SLOT
from machine import Pin
from pimoroni_yukon import SLOT1 as SLOT_AUDIO
from pimoroni_yukon.modules import AudioAmpModule
# Main
yukon = Yukon() # Create a new Yukon object
modules = [] # A list to store QuadServo module objects created later
# Motors
CURRENT_LIMIT = 0.5 # The maximum current (in amps) the motors will be driven with
CLUSTER_PIO = 0 # The PIO system to use (0 or 1) to drive the motor cluster
CLUSTER_SM = 0 # The State Machines (SM) to use to drive the motor cluster
# Ultrasound
trigger = SLOT.FAST1
echo = SLOT.FAST3
trigger.init(Pin.OUT)
echo.init(Pin.IN)
# Sound
I2S_ID = 0 # The I2S instance to use for audio (only 0 and 1 supported)
WAV_FILE_A = "ahoy.wav" # The first wave file. Make sure this file is present in the root directory of your Yukon
VOLUME_A = 0.8 # The volume (between 0.0 and 1.0) to play the first file at
amp = AudioAmpModule(I2S_ID) # Create an AudioAmpModule object
yukon.register_with_slot(amp, SLOT_AUDIO)
# ultrasound sensor read
def ultra():
trigger.off()
utime.sleep_us(2)
trigger.on()
utime.sleep_us(5)
trigger.off()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
print("The distance from object is ",distance,"cm")
# LOOP
try:
# Find out which slots of Yukon have BigMotorModule attached
for slot in yukon.find_slots_with(BigMotorModule):
module = BigMotorModule(init_motor=False, # Create a BigMotorModule object
init_encoder=False)
yukon.register_with_slot(module, slot) # Register the BigMotorModule object with the slot
modules.append(module) # Add the object to the module list
yukon.verify_and_initialise() # Verify that BigMotorModules are attached to Yukon, and initialise them
motors = MotorCluster(CLUSTER_PIO, CLUSTER_SM,
pins=[module.motor_pins for module in modules])
# enableS
yukon.enable_main_output() # Turn on power to the module slots
amp.enable() # Enable the audio amplifier
for module in modules:
module.enable() # Enable the motor driver on the BigMotorModule
# play a welcome sound
SPEED = 0.5
amp.player.play_wav(WAV_FILE_A) # Play file A
amp.set_volume(VOLUME_A) # Set the volume to play file A at
time.sleep(2)
# Loop until the BOOT/USER button is pressed
while not yukon.is_boot_pressed():
motors.speed(0, SPEED)
motors.speed(1, -SPEED)
time.sleep(2)
motors.speed(1, SPEED)
motors.speed(0, -SPEED)
time.sleep(2)
ultra()
finally:
yukon.reset()