対応ロボット:Qmcum(QX-001R3J)
クムクムの距離センサーを使って物体までの距離を測るプログラムです。
Arduinoでのプログラムの基本はArduinoに標準で用意されている関数だけで完成します。
特に、ECHOのパルスを受ける関数は、pulseInというとても便利な関数で簡単に実現できます。
このサンプルを使い簡単に距離データを求めることができます。
シリアルモニターを使い計測した距離をリアルタイムに画面に表視させています。
ソースコード
#define Echo A3
int Duration;
float Distance;
void setup() {
Serial.begin(9600);
while (!Serial) { ; } //Leonardoの場合にはこの部分が必要
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
}
void loop() {
digitalWrite(Trig,LOW); //まずLowにする
delayMicroseconds(1); //1μ秒まつ
digitalWrite(Trig,HIGH); //トリガー信号をあげる
delayMicroseconds(11); //10μ秒だが念のため11μ秒HIGHを出す
digitalWrite(Trig,LOW); //信号を落とす
Duration = pulseIn(Echo,HIGH);//パルスがHIGHの間の時間を測る
if (Duration>0) {
//パルスの秒から距離を計算する
Distance = Duration/2;
Distance = Distance*340*100/1000000;
Serial.pulseln(Distance);//シリアルに書き出してみる
}
delay(1000);
}
関数
delayMicroseconds pruseIn Serial.begin Serial.println
クムクムのセンサー
クムクムロボットでは、HC-SR04という距離センサーを使用しています。
このセンサーは、センサーのTRIGピンに対してパルス(10μ秒)を与えると、40kHzの超音波を発生させて、その後センサーのECHOピンより8個のパルスを返します。
この8個のパルスを受信した時間の長さから障害物までの距離を計算で求めることになります。
距離=331.5 + 0.6 t (m/sec) tは摂氏温度

Arduinoによる制御方法
ArduinoなどマイコンからはTRIGを与える信号を出力ポートに接続し、ECHO信号をアナログポートで受けます。
クムクムでは、TRIG出力をD13で、ECHO入力をA3ポートで行います。
またセンサーには動作用の電源(5V)と信号用GNDをボードと接続します。

シリアルモニター
Arduinoには、プログラミング中にデータがどのようになっているかを知るための方法として、SerialMonitorという方法があります。
上のプログラムでも計測した距離をSerialで表示しているコードがあります。
Serial.println(Distance)
この命令は計算した Distance値をモニター画面に表示してくれます。
printlnはデータを表示した後に自動改行をする関数で、開業したくない場合は printを使用します。


◆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)
クムクムの距離センサーを使って物体までの距離を測るプログラムです。
Arduinoでのプログラムの基本はArduinoに標準で用意されている関数だけで完成します。
特に、ECHOのパルスを受ける関数は、pulseInというとても便利な関数で簡単に実現できます。
このサンプルを使い簡単に距離データを求めることができます。
シリアルモニターを使い計測した距離をリアルタイムに画面に表視させています。
ソースコード
#define Echo A3
int Duration;
float Distance;
void setup() {
Serial.begin(9600);
while (!Serial) { ; } //Leonardoの場合にはこの部分が必要
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
}
void loop() {
digitalWrite(Trig,LOW); //まずLowにする
delayMicroseconds(1); //1μ秒まつ
digitalWrite(Trig,HIGH); //トリガー信号をあげる
delayMicroseconds(11); //10μ秒だが念のため11μ秒HIGHを出す
digitalWrite(Trig,LOW); //信号を落とす
Duration = pulseIn(Echo,HIGH);//パルスがHIGHの間の時間を測る
if (Duration>0) {
//パルスの秒から距離を計算する
Distance = Duration/2;
Distance = Distance*340*100/1000000;
Serial.pulseln(Distance);//シリアルに書き出してみる
}
delay(1000);
}
関数
delayMicroseconds pruseIn Serial.begin Serial.println
クムクムのセンサー
クムクムロボットでは、HC-SR04という距離センサーを使用しています。
このセンサーは、センサーのTRIGピンに対してパルス(10μ秒)を与えると、40kHzの超音波を発生させて、その後センサーのECHOピンより8個のパルスを返します。
この8個のパルスを受信した時間の長さから障害物までの距離を計算で求めることになります。
距離=331.5 + 0.6 t (m/sec) tは摂氏温度

Arduinoによる制御方法
ArduinoなどマイコンからはTRIGを与える信号を出力ポートに接続し、ECHO信号をアナログポートで受けます。
クムクムでは、TRIG出力をD13で、ECHO入力をA3ポートで行います。
またセンサーには動作用の電源(5V)と信号用GNDをボードと接続します。

シリアルモニター
Arduinoには、プログラミング中にデータがどのようになっているかを知るための方法として、SerialMonitorという方法があります。
上のプログラムでも計測した距離をSerialで表示しているコードがあります。
Serial.println(Distance)
この命令は計算した Distance値をモニター画面に表示してくれます。
printlnはデータを表示した後に自動改行をする関数で、開業したくない場合は printを使用します。


◆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/