【Arduino IDE】指定したピンの音を停止させる(noTone())

noTone() 関数は、Arduinoで音を停止させるために使用されます。これは、tone() 関数によって生成された音を止めるために必要です。tone() 関数で鳴らしているピンに対応する出力を止め、音の出力を終了させます。

noTone() 関数の基本的な使い方

void noTone(uint8_t pin);

パラメータ

  • pin: 音を停止させたいデジタルピンの番号。これは、tone() 関数を使って音を鳴らしていたピンと同じです。

noTone() の使い方

例1: tone() で音を鳴らして、noTone() で止める

void setup() {
  // デジタルピン8で440Hzの音を鳴らす
  tone(8, 440);

  // 2秒間音を鳴らし続ける
  delay(2000);

  // デジタルピン8で音を停止
  noTone(8);
}

void loop() {
  // 空のループ
}

このコードでは、デジタルピン8で 440Hz の音を2秒間鳴らした後、noTone() を使用して音を止めます。

例2: ボタンを押したら音を鳴らし、離したら音を止める

int buttonPin = 2;  // ボタンが接続されているピン
int speakerPin = 8; // スピーカーが接続されているピン

void setup() {
  pinMode(buttonPin, INPUT);  // ボタンピンを入力モードに設定
  pinMode(speakerPin, OUTPUT); // スピーカーピンを出力モードに設定
}

void loop() {
  if (digitalRead(buttonPin) == HIGH) {
    // ボタンが押されたら音を鳴らす
    tone(speakerPin, 440);
  } else {
    // ボタンが離されたら音を止める
    noTone(speakerPin);
  }
}

このコードでは、ボタンが押されると 440Hz の音が鳴り、ボタンが離されると noTone() が呼ばれて音が止まります。

noTone() の注意点

  1. 音の完全停止: noTone() を呼び出すと、指定されたピンでの音の生成が完全に停止します。これは、tone() によって生成されたすべての信号(PWM)が止まり、スピーカーやブザーが無音になります。
  2. タイマーのリリース: tone() 関数は内部的にタイマーを使用していますが、noTone() を使うとそのタイマーが解放されます。これにより、他の処理(例えば、サーボモーター制御などで使用するタイマー)が正しく動作するようになります。
  3. 指定されたピンのみを対象: noTone() は、指定されたピンの音のみを停止します。他のピンで tone() によって生成された音には影響を与えません。

まとめ

  • tone() 関数で鳴らしている音を停止させるために使用します。
  • pin 引数で指定したピンの音を止める。
  • タイマーや他の処理に影響を与えないために、音が不要になった場合は noTone() で音を止めるのが推奨されます。

noTone() を使うことで、音を必要なタイミングで停止できるようになり、シンプルなサウンド制御が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次