基礎知識

クムクムのBEEP音をC言語で鳴らす

投稿日:

回路ブロック

下記に音関係の回路ブロックを示します。
下記の図の通り、クムクムの音系統には、BEEP音とVOICEの2つあります。
この2つの音は1つの音量調整用のボリュームを通してLM386というオーディオアンプを通してスピーカから出力されます。
今回のBEEP音に関しては単純にCPUのD12ポートからの信号を再生していますが、もうⅠ系統のVOICEに関してはCPUとI2Cバスで接続されており、別系統でコントロールされます。

プログラムを作成するためにクムクムと直接接続

開発用のPCとクムクムは下記の図の通りUSBケーブルで直接結びます。
クムクムのUSBポートは背中の電源スイッチの横にあるマイクロUSBタイプです。
USBケーブルによっては、データラインがなく電源だけを供給するものがあるため気を付けてください。
PCとクムクムがUSBケーブルで接続された段階で、クムクム本体には電源が投入されます。
※音プログラムを開発する場合、電池の装着は必要ありません。

ArduinoIDEを使ってプログラムを作成する

IDEにおいて、対象とするボードの種類を選択します。

ポートを選択します。
ポートは試用するPCの環境で異なるので、自分のPCに合わせたポートを選択します。

440Hzの音で1秒間なるプログラムを作ってみました。

クムクムをスクラッチから使用できるように戻す

Arduinoでプログラムを作って動かすと、もともとボードに搭載されていたクムクムのプログラムがすべて消されてしまいます。
そのため、もう一度もとの状態に戻したい場合には、クムクムホームページのサポートページからファームアップデータをダウンロードし、ファームウエアーを新たに書き込む必要があります。

https://qumcum.com/support/main.html

Arduino tone関数

指定したピンに指定した周波数の矩形波(50%デューティ)を出力します。
発音時間(duration)を指定しなかった場合、noTone()を実行するまで発音続けます。
出力ピンに圧電ブザーやスピーカに接続することで一定ピッチ音を再生することができます。
同時に1音だけ再生できます。
すでに他のピンでtone()が実行されている場合は次に実行したtone()は発音しません。
その場合、まず、noTone()を実行します。
noTone()を実行せず、同じピンに対してtone()を実行した場合は周波数が変化します。

※31Hz 以下の周波数は生成できません。
※ピン3と11のPWM出力を妨げます。

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

pin: トーンを出力するピン
frequency: 周波数(Hz)
duration: 出力する時間をミリ秒で指定

Board,Min frequency (Hz),Max frequency (Hz)
Uno/Mega/Leonardo and other AVR boards,31~65535
Gemma, Not implemented Not implemented
Zero, 41~275000
Due, Not implemented Not implemented

-基礎知識

Copyright© クムクム技術ブログ , 2020 All Rights Reserved.