I just dug up an old Musical Instrument Shield (https://www.sparkfun.com/products/10587) and am hoping to use it as part of a new toy for my son.
When the shield is attached to an Uno and it is first powered on it seems to require that the reset button on the shield be pressed before the example code will run. When the shield is removed the LEDs indicating transmission start flashing right away when the board is powered. Does this have something to do with the “the reset pin [being] pulled high” as described on the product page?
If I’m going to use this board I would like the sketch I write to run as soon as the board is plugged in to power. What do I need to change to make this happen? Or is this a limitation of the shield or its chip somehow?
Now, this is something bizarre. The contents do not say that you have to press the RESET button to run your code every time. It should not be the case either. I used a waveshare music shield which features this same IC. But I did not face this problem.
It is strange for sure. I did note the following line in the Quick Start tutorial for the product (https://www.sparkfun.com/tutorials/302):
Once the example code is loaded onto your Arduino, plug in some headphones or active speakers to the audio jack on the shield, and reset the device. You should hear a string of seemingly random percussion sounds…
Not sure if that’s meant to suggest this behavior is normal for this board or what. Code runs fine and produces sound whenever a reset is triggered, whether by pushing the button or by opening a serial connection to the device. Behavior is the same whether powered via USB or 9V supply.
I’ve spent some more time investigating this and there is definitely an issue related to the way the chip’s reset pin is wired on the shield, at least on my copy.
The chip’s reset pin is wired to pin D4 on the shield through a 1K resistor and to 3.3V through a 100K resistor (see https://cdn.sparkfun.com/datasheets/Dev … ld-v13.pdf). When the shield’s D4 pin is disconnected from the Arduino (leaving VCC, GND and D3 connected) the Arduino boots and runs its sketch as normal. When D4 is reconnected the Arduino simply doesn’t boot when first connected to power. However, when the Arduino is reset (with power still connected) it does boot and run its sketch as it should with D4 connected.
So it seems that something about how D4 on the shield is wired is messing with the Arduino when it is first powered up, requiring the Arduino to be reset before any code is run. What might be causing this?
Of course there could just be something wrong with my copy of the board. I might be able to work with it without the chip’s reset pin connected to the Arduino, but it would be nice to get to the bottom of this.
The RESET pin is disconnected from D4 by a open jumper so it should not matter if you connect the shield to D4 or not.
The datasheet says RESET on the VS1053 chip is active low, pulling it high will prevent the chip from entering reset.
It looks like the example code does try to reset the VS1053 chip via D4, maybe try connecting that jumper?
Is the RX jumper connected? I’m not seeing any way for the arduino to talk to the shield without that jumper being in place either.
Code executes as soon as you power the board, if you apply power before putting on your headphones, the sounds will have already have played by the time you put on headphones to listen.
What arduino are you using?
Thanks for the reply. Those jumpers are both connected on my shield (without me bridging them). Not sure what to make of that.
The issue is not that I don’t hear anything (shield example code actually works fine with D4 disconnected), it’s that the Uno board does not even boot at first when powered with D4 connected. Even if the sketch is just the vanilla Blink sketch, the onboard LED does not blink unless the Uno is reset after being powered. Pull D4 and it starts blinking as it should when the Uno is powered.
There’s something about D4 on the shield (maybe voltage level related?) that messes with the Arduino at first but is somehow cleared when the Uno is reset. Thoughts?
What arduino are you using?
Something connected to D4 won’t have any affect on booting an uno.
It’s a genuine Uno, no knockoff.
Unfortunately I have no other ideas on what might be causing your troubles, I’ve not seen anything like what you’re describing.