🔊

Arduinoで音を出す方法

2022/12/30に公開


配線は指すだけ

部品

https://akizukidenshi.com/catalog/g/gP-04118/

1個30円。

項目
動作電圧範囲 30Vp-p以下
  • Vp-p は Volt peak to peak の略でサイン波の縦の全体幅のこと
  • Arduino は最大 5V なので 5Vp-p <= 30Vp-p で問題ないってこと?
  • 他に見る項目がないのだけど電流とかは気にしないでいい?

配線

  • プラス側を 8 と繋ぐ (PWMではないポートで可)
  • ブレッドボード不要

コード

音を出すとかそんなのは割り込み処理を含めハードウェアを知り尽くした者だけが到達できる領域だと勝手にハードルを高くしていたのだけどやってみたら一行だった。

void setup() {
}

void loop() {
  tone(8, 262, 500);  // ポート8に繋いだスピーカーに C (262) を 0.5 秒鳴らす
  delay(1000);        // 1秒待つ (1秒間の休符になるわけではない)
}

実際のところ難しいのは確かだけど tone が内部で全部やってくれていた。
tone は非同期なので次の delay と組み合わせると 0.5 秒鳴らす → 0.5 秒待つ を繰り返す。

参考

内部の構造に詳しい (見てもよくわからないけど)
https://garretlab.web.fc2.com/arduino/inside/hardware/arduino/avr/cores/arduino/Tone.cpp/tone.html

自力で digitalWrite のみを駆使して鳴らしている
鳴らす処理をメインとするなら割り込みは必要ないようだ
https://kyabe.net/blog/arduino-squarewave/

通常は1音しか鳴らせないはず
https://qiita.com/seigot/items/2121998f4a76c0acba3f

Discussion

ログインするとコメントできます