Bird
Raised Fist0
Arduinoprogramming~5 mins

noTone() to stop sound in Arduino

Choose your learning style10 modes available
Introduction

The noTone() function stops any sound that is playing on a pin. It helps you turn off a buzzer or speaker when you want silence.

When you want to stop a buzzer after a beep.
When you want to end a sound effect in a game.
When you want to stop a warning sound after a button press.
When you want to silence a speaker before playing a new sound.
Syntax
Arduino
noTone(pin);

pin is the number of the pin connected to the buzzer or speaker.

This function stops the sound immediately on that pin.

Examples
Stops any sound playing on pin 8.
Arduino
noTone(8);
Stops sound on pin 3, useful if you used tone(3, frequency) before.
Arduino
noTone(3);
Sample Program

This program plays a 1000 Hz sound on pin 9 for 1 second, then stops the sound using noTone().

Arduino
#define buzzerPin 9

void setup() {
  pinMode(buzzerPin, OUTPUT);
  tone(buzzerPin, 1000); // Play 1000 Hz tone
  delay(1000);           // Wait 1 second
  noTone(buzzerPin);     // Stop the tone
}

void loop() {
  // Nothing here
}
OutputSuccess
Important Notes

You must use the same pin number in noTone() that you used in tone().

If you don't call noTone(), the sound will keep playing forever.

noTone() only works on pins that support tone().

Summary

noTone() stops sound on a buzzer or speaker pin.

Use it to end sounds cleanly after playing tones.

Always match the pin number with the one used in tone().

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

  1. 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.
  2. Step 2: Differentiate from tone()

    Unlike tone(pin, frequency) which starts a sound, noTone(pin) stops it.
  3. Final Answer:

    Stops any sound currently playing on the specified pin -> Option C
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    noTone(8); -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    A 1000 Hz tone plays for 500 ms, then stops -> Option B
  4. 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

  1. 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.
  2. 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().
  3. Final Answer:

    noTone() is missing the pin number argument -> Option A
  4. 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

  1. 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.
  2. 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.
  3. 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.
  4. Final Answer:

    tone(6, 440); delay(2000); noTone(6); -> Option A
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard