tone()

Last revision:2025/04/30

名称

tone()

説明

指定した周波数の方形波(矩形波)をデューティー比50%で、指定したピンに生成する。方形波を生成する期間を指定することもできる。期間を指定しなければ、noTone()を呼び出すまで生成し続ける。ピンにピエゾブザーや他のスピーカーに接続して、音を鳴らすことができる。

同時に生成できるのは一つの方形波だけである。別のピンですでに方形波が生成されているときは、tone()を呼び出しても何も起こらない。方形波を生成しているピンを指定した時は、周波数を設定(変更)する。

tone()関数は(Mega以外のボードの)3番ピンと11番ピンのPWM出力に影響を与える。

31Hzより低いトーンを生成することはできない。技術的な詳細は、Brett Hagman’s notesを参照のこと。

書式

指定したピンに、期限なしあるいは指定した時間だけトーンを生成するには、以下の関数を使う。

  • tone(pin, frequency)
  • tone(pin, frequency, duration)

C言語シグネチャ(avr)

void tone(uint8_t pin, unsigned int frequency);

void tone(uint8_t pin, unsigned int frequency, unsigned long duration);

引数

この関数は以下の引数を受け付ける。

pin方形波を生成するピンの番号。
frequency方形波の周波数(ヘルツ)。unsigned int型。データ型: unsigned int
duration方形波を生成する期間(ミリ秒)。unsigned long型。この引数はオプションである。データ型: unsigned long

戻り値

なし

コード例

D0ピンに1秒毎に方形波を生成する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#define BUZZER_PIN D0 // Example pin

void setup() {
  pinMode(BUZZER_PIN, OUTPUT);
}

void loop() {
  tone(BUZZER_PIN, 1000, 1000); // 1 kHz tone
  delay(1000);
}

注意

  • 複数のピンで異なる周波数の方形波を生成したいときは、次のピンを指定してtone()を呼び出す前に、noTone()関数を呼び出す必要がある。
  • この関数はノンブロッキングである。durationパラメータを指定したときに、tone()が終了していなくても、スケッチの実行は続行される。

参照

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/advanced-io/tone/

実装の解析

tone()

最終更新日

July 12, 2026

inserted by FC2 system