対応ロボット:Qmcum(QX-001R3J)
クムクムのBEEP音を使って、100Hz~2000Hzまでの音を乱数でセレクトし、ずっと鳴り続けるプログラムを作ります。乱数とは規則性のない数字のことでサイコロを振った時に出る目も規則性がないので乱数になります。
乱数はrandom関数を使うことで取得することができ、random関数で取得した値を格納する箱(変数といいます)をあらかじめ用意しておき、その箱(変数)を使って、tone関数でランダムな音を鳴らします。今回はloop()の中にプログラムを書いているのでランダムな音がずっと繰り返し鳴り続けます。
ソースコード
int randNumber; // ランダム関数で取得した値を格納する変数
void setup() {
// put your setup code here, to run once:
// ランダム関数の初期化
randomSeed(analogRead(0));
}
void loop() {
// put your main code here, to run repeatedly:
// 100~2000までのランダムな値を取得する
randNumber = random(100, 2001);
// ランダムに取得したHzの音を鳴らす
tone(12, randNumber, 500);
delay(1000); // 1秒待ち
}
BEEPについて
クムクムのBEEP音はArduinoのtone関数によって出力します。
CPUのデジタル指定した出力のポートから矩形波を出力することでこれをtoneとして音に変えます。
音を再生するためのもっとも簡単な方法は、Arduinoの出力ポートに圧電ブザーなどを接続しますが、これでは音が小さいため、クムクムではオーディオアンプを通して小型のスピーカから音を鳴らしています。

tone関数
Arduino標準関数で、出力PINから、周波数(50%のデューティ・サイクル)の高さの音を、出力時間(msec)鳴らします。出力時間(msec)を省略した場合は、出力を止める noTone()関数をコールするまでBEEP音はなり続けます。
※tone関数によって指定できるPINは1つだけに限られます。
出力PIN | 出力PIN番号を指定します |
周波数 | 出力する周波数を設定します |
出力時間 | 何ミリ秒鳴らしたいかを設定します 型:unsigned long 0~4,294,967,295 |
戻り値 | なし |
周波数は使用するボード、アンプ・スピーカーの性能によって異なりますが、プログラム的には下記の値を指定することが可能です
ボード | 出力周波数 |
Uno,Mega,Leonardo,その他AVR系 | 31Hz~65535Hz |
Zero | 41Hz~275000Hz |
Gemma,Due | 実装なし |
noTone関数
tone関数で出力した音を停止します。
PIN番号 | toneを鳴らした出力PIN番号 |
戻り値 | なし |
音階と周波数


◆Arduinoプログラミングについて
Arduinoを利用して、C,C++言語でクムクムをコントロールするプログラムを作り、クムクムロボットのボード内に書き込んで直接動かすことができます。
スクラッチやPythonなどより、より早く・より自由に動かすことができます。
CPUから各パーツを直接コントロールするプログラムを作るため、電気的な知識をしっかりマスターすることができます。
1.開発環境
WindowsまたはMacなど、ArduinoIDEがインストールされたパソコンとクムクムをマイクロUSBのケーブルで結びます。
※ArduinoIDEは <こちら>から最新バージョンをダウンロードすることができます。
※USBケーブルは必ずデータ通信が可能なケーブルをご用意ください。(中にはスマホ用などで充電専用のケーブルもあります)

2.クムクムのCPUを選択する
ArduinoIDEを起動し、お使いのクムクムの機種にあったCPUを選択します。
Qumcum[QX-001R3J]の場合には【ArduinoLeonardo】を、QumcumPRO/W[QX-001R321J/321E]の場合にはBoards ManagerからESP32を選択します。
ESP32が選択項目に現れない場合は、ESP32用のライブラリーなどをインストールしてください。(インストール方法などはArduino関連サイトなどから検索します。※参考サイト <ここ> リンク等は予告なく切れる場合があります。)
●使用CPU
Qumcum[QX-001R3J] … ATMEGA32U4
QumcumPRO/W[QX-001R321J/E] … ESP32 WROOM32-D,E

4.書き込み
プログラムができたら、パソコンとクムクムの接続されているポートを合わせ、その後書き込みボタン(右スクリーンショット赤い〇矢印)をクリックします。
クリック後、C言語で書かれたプログラムは機械語にコンパイルされ、USBケーブルを経由してロボットのCPUに書き込まれます。
書き込みが完了すると、プログラムは自動で実行され、作られたプログラム通りにロボットは動きます。
もし思い通りに動かなかったら、プログラムのどこかに間違えがあるので、直してもう一度書き込みます。
※Arduinoでは文法ミス以外は動かないプログラムでもCPUに書き込んで動かそうとしますので、書き込んでみなければ正しく動くかどうかがわかりません。
※また、CPUの中にあらかじめ書き込まれているArduinoシステムを壊してしまうプログラムも書き込めてしまうので、プログラミングは慎重に行ってください。

◆クムクムロボット公式サイトのマニュアル
https://qumcum.com/wp-content/uploads/2022/08/start_scratch.pdf
◆Scratch(スクラッチ)で動く3Dロボット「3D-WEBクムクム」β版
https://personal.qumcum.com/home3d/robo-real/
◆クムクムロボット(アマゾンQumcumストア)
https://www.amazon.co.jp/stores/Qumcum/page/FFCFA57A-F592-49A0-9F23-3D90514E5E61?ref_=ast_bln
◆Youtubeにはたくさんの動画を載せています
https://www.youtube.com/@qumcum/
対応ロボット:Qmcum(QX-001R3J)
クムクムのBEEP音を使って、100Hz~2000Hzまでの音を乱数でセレクトし、ずっと鳴り続けるプログラムを作ります。乱数とは規則性のない数字のことでサイコロを振った時に出る目も規則性がないので乱数になります。
乱数はrandom関数を使うことで取得することができ、random関数で取得した値を格納する箱(変数といいます)をあらかじめ用意しておき、その箱(変数)を使って、tone関数でランダムな音を鳴らします。今回はloop()の中にプログラムを書いているのでランダムな音がずっと繰り返し鳴り続けます。
ソースコード
int randNumber; // ランダム関数で取得した値を格納する変数
void setup() {
// put your setup code here, to run once:
// ランダム関数の初期化
randomSeed(analogRead(0));
}
void loop() {
// put your main code here, to run repeatedly:
// 100~2000までのランダムな値を取得する
randNumber = random(100, 2001);
// ランダムに取得したHzの音を鳴らす
tone(12, randNumber, 500);
delay(1000); // 1秒待ち
}
BEEPについて
クムクムのBEEP音はArduinoのtone関数によって出力します。
CPUのデジタル指定した出力のポートから矩形波を出力することでこれをtoneとして音に変えます。
音を再生するためのもっとも簡単な方法は、Arduinoの出力ポートに圧電ブザーなどを接続しますが、これでは音が小さいため、クムクムではオーディオアンプを通して小型のスピーカから音を鳴らしています。

tone関数
Arduino標準関数で、出力PINから、周波数(50%のデューティ・サイクル)の高さの音を、出力時間(msec)鳴らします。出力時間(msec)を省略した場合は、出力を止める noTone()関数をコールするまでBEEP音はなり続けます。
※tone関数によって指定できるPINは1つだけに限られます。
出力PIN | 出力PIN番号を指定します |
周波数 | 出力する周波数を設定します |
出力時間 | 何ミリ秒鳴らしたいかを設定します 型:unsigned long 0~4,294,967,295 |
戻り値 | なし |
周波数は使用するボード、アンプ・スピーカーの性能によって異なりますが、プログラム的には下記の値を指定することが可能です
ボード | 出力周波数 |
Uno,Mega,Leonardo,その他AVR系 | 31Hz~65535Hz |
Zero | 41Hz~275000Hz |
Gemma,Due | 実装なし |
noTone関数
tone関数で出力した音を停止します。
PIN番号 | toneを鳴らした出力PIN番号 |
戻り値 | なし |
音階と周波数


◆Arduinoプログラミングについて
Arduinoを利用して、C,C++言語でクムクムをコントロールするプログラムを作り、クムクムロボットのボード内に書き込んで直接動かすことができます。
スクラッチやPythonなどより、より早く・より自由に動かすことができます。
CPUから各パーツを直接コントロールするプログラムを作るため、電気的な知識をしっかりマスターすることができます。
1.開発環境
WindowsまたはMacなど、ArduinoIDEがインストールされたパソコンとクムクムをマイクロUSBのケーブルで結びます。
※ArduinoIDEは <こちら>から最新バージョンをダウンロードすることができます。
※USBケーブルは必ずデータ通信が可能なケーブルをご用意ください。(中にはスマホ用などで充電専用のケーブルもあります)

2.クムクムのCPUを選択する
ArduinoIDEを起動し、お使いのクムクムの機種にあったCPUを選択します。
Qumcum[QX-001R3J]の場合には【ArduinoLeonardo】を、QumcumPRO/W[QX-001R321J/321E]の場合にはBoards ManagerからESP32を選択します。
ESP32が選択項目に現れない場合は、ESP32用のライブラリーなどをインストールしてください。(インストール方法などはArduino関連サイトなどから検索します。※参考サイト <ここ> リンク等は予告なく切れる場合があります。)
●使用CPU
Qumcum[QX-001R3J] … ATMEGA32U4
QumcumPRO/W[QX-001R321J/E] … ESP32 WROOM32-D,E

4.書き込み
プログラムができたら、パソコンとクムクムの接続されているポートを合わせ、その後書き込みボタン(右スクリーンショット赤い〇矢印)をクリックします。
クリック後、C言語で書かれたプログラムは機械語にコンパイルされ、USBケーブルを経由してロボットのCPUに書き込まれます。
書き込みが完了すると、プログラムは自動で実行され、作られたプログラム通りにロボットは動きます。
もし思い通りに動かなかったら、プログラムのどこかに間違えがあるので、直してもう一度書き込みます。
※Arduinoでは文法ミス以外は動かないプログラムでもCPUに書き込んで動かそうとしますので、書き込んでみなければ正しく動くかどうかがわかりません。
※また、CPUの中にあらかじめ書き込まれているArduinoシステムを壊してしまうプログラムも書き込めてしまうので、プログラミングは慎重に行ってください。

◆クムクムロボット公式サイトのマニュアル
https://qumcum.com/wp-content/uploads/2022/08/start_scratch.pdf
◆Scratch(スクラッチ)で動く3Dロボット「3D-WEBクムクム」β版
https://personal.qumcum.com/home3d/robo-real/
◆クムクムロボット(アマゾンQumcumストア)
https://www.amazon.co.jp/stores/Qumcum/page/FFCFA57A-F592-49A0-9F23-3D90514E5E61?ref_=ast_bln
◆Youtubeにはたくさんの動画を載せています
https://www.youtube.com/@qumcum/