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()
の注意点
- 音の完全停止:
noTone()
を呼び出すと、指定されたピンでの音の生成が完全に停止します。これは、tone()
によって生成されたすべての信号(PWM)が止まり、スピーカーやブザーが無音になります。 - タイマーのリリース:
tone()
関数は内部的にタイマーを使用していますが、noTone()
を使うとそのタイマーが解放されます。これにより、他の処理(例えば、サーボモーター制御などで使用するタイマー)が正しく動作するようになります。 - 指定されたピンのみを対象:
noTone()
は、指定されたピンの音のみを停止します。他のピンでtone()
によって生成された音には影響を与えません。
まとめ
tone()
関数で鳴らしている音を停止させるために使用します。pin
引数で指定したピンの音を止める。- タイマーや他の処理に影響を与えないために、音が不要になった場合は
noTone()
で音を止めるのが推奨されます。
noTone()
を使うことで、音を必要なタイミングで停止できるようになり、シンプルなサウンド制御が可能になります。