📖 Scenario: You have a small buzzer connected to your Arduino. You want to play a sound for a short time and then stop it.
🎯 Goal: Build a simple Arduino program that plays a tone on a buzzer and then stops the sound using noTone().
📋 What You'll Learn
Create a variable for the buzzer pin number
Set the buzzer pin as an output
Use tone() to play a sound on the buzzer
Use noTone() to stop the sound
💡 Why This Matters
🌍 Real World
Stopping sounds on devices like alarms, timers, or notifications is common in electronics projects.
💼 Career
Understanding how to control hardware like buzzers is useful for embedded systems and IoT jobs.
Progress0 / 4 steps
1
Set up the buzzer pin
Create an integer variable called buzzerPin and set it to 8. Then, in the setup() function, use pinMode(buzzerPin, OUTPUT); to set the buzzer pin as an output.
Arduino
Hint
Remember to declare buzzerPin as an integer and set it to 8. Then use pinMode inside setup().
2
Play a tone on the buzzer
In the loop() function, use tone(buzzerPin, 1000); to play a 1000 Hz tone on the buzzer.
Arduino
Hint
Use the tone() function with buzzerPin and frequency 1000.
3
Stop the tone using noTone()
After playing the tone, use noTone(buzzerPin); to stop the sound. Add a delay of 1000 milliseconds before stopping the tone.
Arduino
Hint
Use delay(1000); to wait one second, then call noTone(buzzerPin); to stop the buzzer.
4
Print a message when the tone stops
After stopping the tone with noTone(buzzerPin);, add Serial.begin(9600); in setup() and use Serial.println("Tone stopped"); in loop() to print the message.
Arduino
Hint
Initialize serial communication in setup() and print the message after stopping the tone in loop().
Practice
(1/5)
1. What does the Arduino function noTone(pin) do?
easy
A. Changes the volume of the sound on the specified pin
B. Starts playing a tone on the specified pin
C. Stops any sound currently playing on the specified pin
D. Sets the pin as an output pin
Solution
Step 1: Understand the purpose of noTone()
The function noTone(pin) is designed to stop any sound that is currently playing on the given pin.
Step 2: Differentiate from tone()
Unlike tone(pin, frequency) which starts a sound, noTone(pin) stops it.
Final Answer:
Stops any sound currently playing on the specified pin -> Option C
Quick Check:
noTone() stops sound = A [OK]
Hint: Remember: noTone() always stops sound on the pin [OK]
Common Mistakes:
Confusing noTone() with tone()
Thinking noTone() changes volume
Assuming noTone() starts sound
2. Which of the following is the correct syntax to stop a tone on pin 8?
easy
A. noTone8();
B. noTone();
C. noTone(pin=8);
D. noTone(8);
Solution
Step 1: Recall the function syntax
The correct syntax for stopping a tone on a specific pin is noTone(pin); where pin is the pin number.
Step 2: Check each option
noTone8(); uses invalid function name. noTone(pin=8); uses invalid named parameter syntax. noTone(); omits the pin number. noTone(8); is correct.
Final Answer:
noTone(8); -> Option D
Quick Check:
Correct syntax = B [OK]
Hint: Use noTone(pin) with pin number inside parentheses [OK]
Common Mistakes:
Omitting the pin number
Using incorrect function names
Passing pin as named argument
3. What will be the output behavior of this Arduino code snippet?
tone(9, 1000);
delay(500);
noTone(9);
delay(500);
medium
A. A 1000 Hz tone plays continuously without stopping
B. A 1000 Hz tone plays for 500 ms, then stops
C. No sound plays at all
D. The tone plays for 1000 ms then stops automatically
Solution
Step 1: Analyze tone() and delay()
The tone(9, 1000); starts a 1000 Hz sound on pin 9. The delay(500); pauses the program for 500 milliseconds while the tone plays.
Step 2: Analyze noTone() and second delay()
The noTone(9); stops the sound on pin 9. The following delay(500); pauses for another 500 ms with no sound.
Final Answer:
A 1000 Hz tone plays for 500 ms, then stops -> Option B
Quick Check:
tone + delay + noTone = sound stops after 500 ms [OK]
Hint: noTone(pin) stops sound immediately after delay [OK]
Common Mistakes:
Assuming tone stops automatically after delay
Thinking noTone restarts sound
Ignoring delay effects
4. Identify the error in this Arduino code snippet:
tone(7, 500);
noTone();
delay(1000);
medium
A. noTone() is missing the pin number argument
B. tone() frequency 500 is invalid
C. delay() cannot be used after noTone()
D. tone() must be called after noTone()
Solution
Step 1: Check noTone() usage
The function noTone() requires the pin number to specify which pin to stop sound on. Here, it is called without any argument, which is incorrect.
Step 2: Verify other function calls
The tone(7, 500); is valid, and delay(1000); is allowed after noTone(). The error is only the missing pin argument in noTone().
Final Answer:
noTone() is missing the pin number argument -> Option A
Quick Check:
noTone() needs pin argument = C [OK]
Hint: Always pass pin number to noTone() [OK]
Common Mistakes:
Calling noTone() without pin
Thinking delay() is disallowed after noTone()
Misunderstanding tone() frequency limits
5. You want to play a 440 Hz tone on pin 6 for 2 seconds, then stop the sound immediately. Which code snippet correctly achieves this?
hard
A. tone(6, 440);
delay(2000);
noTone(6);
B. noTone(6);
tone(6, 440);
delay(2000);
C. tone(6, 440);
noTone(6);
delay(2000);
D. tone(6, 440, 2000);
noTone(6);
Solution
Step 1: Understand tone() with duration
tone(6, 440, 2000); plays tone for 2 seconds automatically, so calling noTone(6); immediately after stops it early, which is unnecessary.
Step 2: Analyze each option's order
tone(6, 440);
delay(2000);
noTone(6); plays tone on pin 6 at 440 Hz, waits 2 seconds, then stops the tone with noTone(6);. This correctly plays sound for 2 seconds then stops.
Step 3: Check incorrect options
noTone(6);
tone(6, 440);
delay(2000); stops tone before playing it. tone(6, 440);
noTone(6);
delay(2000); stops tone immediately after starting, so no sound lasts. tone(6, 440, 2000);
noTone(6); stops tone immediately after starting with duration, which is redundant.
Final Answer:
tone(6, 440);
delay(2000);
noTone(6); -> Option A
Quick Check:
Play tone, delay, then noTone = D [OK]
Hint: Play tone, delay for duration, then call noTone(pin) [OK]
Common Mistakes:
Calling noTone() before delay
Stopping tone immediately after starting
Using tone() duration with noTone() redundantly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.