対応ロボット:Qmcum(QX-001R3J)

3Dロボットで距離センサーを使って距離を測る方法についてマスターしましょう。
何かの動作を繰り返すプログラムを作ると、ループから抜る方法が必要になるいことがあります。
ここでは何かを距離センサーで発見するまではループするが、見つけたとたんにループから抜けてプログラムが次の処理に移って終了するというプログラムを作ります。

    ※おしゃべりはArduinoライブラリの追加が必要です。何かのおしゃべりサンプルプログラムのページを参照してください。

    ソースコード

    #include "Wire.h"
    #include "AquesTalk.h"
    AquesTalk atp; 
    #define Red A0
    #define Trig 13
    #define Echo A3
    unsigned int Duration;
    float Distance;
    
    void setup() {
      Serial.begin(115200);
      while (!Serial) { ; } //Leonardoの場合にはこの部分が必要
      Wire.begin();
      atp.SetPitch(0);
      atp.SetSpeed(100);
      pinMode(Red,OUTPUT);
      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.println(Distance);//シリアルに書き出してみる
      }
      else{
        Distance = 9999; //計測エラー
      }
      digitalWrite(Red, HIGH);
      if(Distance>30){
        return;
      }
      digitalWrite(Red, LOW);
      atp.Synthe("hakken");
      while(1){
        ;
      }
    }
    

    関数

    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

      3.プログラミング

      各ボードの情報を参考にプログラミングを行います。
      具体的なプログラミングについては、随時サンプルプログラムと技術情報をクムクムライブラリー <3J> <321J/E> に掲載していきますので参考にプログラミングを進めてください。また、下記のボードマニュアルやネット情報を利用し独自にプログラミングをしていくことも可能です。

      Qumcum[QX-001R3J] のボードマニュアルは  <こちら>
      QumcumPRO/W[QX-001R321J/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)

      3Dロボットで距離センサーを使って距離を測る方法についてマスターしましょう。
      何かの動作を繰り返すプログラムを作ると、ループから抜る方法が必要になるいことがあります。
      ここでは何かを距離センサーで発見するまではループするが、見つけたとたんにループから抜けてプログラムが次の処理に移って終了するというプログラムを作ります。

        ※おしゃべりはArduinoライブラリの追加が必要です。何かのおしゃべりサンプルプログラムのページを参照してください。

        ソースコード

        #include "Wire.h"
        #include "AquesTalk.h"
        AquesTalk atp; 
        #define Red A0
        #define Trig 13
        #define Echo A3
        unsigned int Duration;
        float Distance;
        
        void setup() {
          Serial.begin(115200);
          while (!Serial) { ; } //Leonardoの場合にはこの部分が必要
          Wire.begin();
          atp.SetPitch(0);
          atp.SetSpeed(100);
          pinMode(Red,OUTPUT);
          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.println(Distance);//シリアルに書き出してみる
          }
          else{
            Distance = 9999; //計測エラー
          }
          digitalWrite(Red, HIGH);
          if(Distance>30){
            return;
          }
          digitalWrite(Red, LOW);
          atp.Synthe("hakken");
          while(1){
            ;
          }
        }
        

        関数

        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

          3.プログラミング

          各ボードの情報を参考にプログラミングを行います。
          具体的なプログラミングについては、随時サンプルプログラムと技術情報をクムクムライブラリー <3J> <321J/E> に掲載していきますので参考にプログラミングを進めてください。また、下記のボードマニュアルやネット情報を利用し独自にプログラミングをしていくことも可能です。

          Qumcum[QX-001R3J] のボードマニュアルは  <こちら>
          QumcumPRO/W[QX-001R321J/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/