3_4_1 Bug Hunt: One Note Piano

Bug Hunt! Test your Troubleshooting.

Prefer listening over reading? Click the play button in the audio bar.

Here’s how Bug Hunts work:

We’ve taken the example code from the last project and inserted errors into it. These errors might be spelling problems, syntax, or we might have changed up how the program works altogether!

The goal of the Bug Hunt is to find and fix the errors so that when you upload the code, it runs just like the example code did on the project page.

Try these steps in order to solve a Bug Hunt:

1) Look over the code closely first, looking for anything that is out of place. We recommend you do this first to build up your ‘bug hunting instincts’.

2) Press ‘Upload the Code’ with your board plugged in and the circuit built. The code won’t work, but it will show you the errors that the computer found - these will pop up in a box just below the code editor. These clues are sometimes vague or confusing, but they may help you find out where the problem is.

3) Check your code references, especially for the functions that have turned red when you hit “Upload”. Compare the syntax of your reference book to the syntax in your code editor here.

After you’ve fixed the bug and the code is working again, hit ‘Restore’ so you can see the code how it was before you fixed it. Is the bug obvious to you now? Reviewing like this will make it easier to find bugs in future programs!

Get stuck? Click on ‘Need a Hint?’ below. It will provide a clue about what’s wrong in this program.

/* Buggy:Press a button to play a tone on the speaker */ void setup() { pinMode(4,OUTPUT); //button pinMode(2,OUTPUT); //speaker } void loop() { if(digitalRead(4)==LOW){ //if button 4 is pressed... tone(2,500); //play a tone of 500 hertz on the speaker } else{ //otherwise (if button 4 is not pressed)... noTone(2); //turn off the tone from the speaker } } // (c) 2023 Let's Start Coding. License: www.letsstartcoding.com/bsdlicense
 



The pinMode function is really important- it makes sure that all of the ports you are using are set up correctly. If a different pinMode (INPUT, OUTPUT, INPUT_PULLUP) was used for one of your components, it could cause the whole program to act strangely!

This bug is also tricky because the computer doesn't see a problem with it - it's technically OK code. But since you know what the program is supposed to do, you'll immediately see (or hear) an issue!

Remember that you can review your code reference book to see the pinMode that each component should use!