PR

【mBot】Arduino IDEの導入~使用方法まで徹底解説!

中学生向けロボット
この記事は約9分で読めます。

Arduino IDE(統合開発環境)は、mBot(Arduinoマイコンボード)のプログラムを開発するためのソフトウェアです。扱われる言語は、C++に基づいたArduino言語で、C++を簡略化して使いやすくしたものです。

本記事では、Arduino IDEを使用してmBotをプログラミングする方法について、必要な準備から基本的な操作まで、mBotを最大限に活用するための手順を詳しく説明します。

Arduino IDEの導入

ダウンロードとインストール

  1. Arduinoの公式サイトへアクセスし、お使いのOS(Windows、Mac、Linux)に対応したバージョンを選択してダウンロードしてインストールします。
    ここでは、「Win 10 and newer, 64bit」の場合で説明を進めます。
  1. mCoreに必要なCH340ドライバーをダウンロードしてインストールします(インストールが完了したら、コンピューターを再起動します)。
    Windows用
    MacOS用
  1. GitHubへアクセスし、ソースをダウンロードします。zipファイルのまま、任意の場所へ保存します。
  2. 手順1でインストールしたArduino IDEを起動し、「Sketch」-> 「Include Library」-> 「Add .ZIP Library…」を選択、ダウンロードしたZIPファイルを選択して開きます。

Arduino IDEの初期設定

言語選択

「File」-> 「Preferences…」を選択します。

SettingsタブでLanguageを日本語に設定してOKを押します。

ボード選択

「ツール」-> 「ボード」-> 「Arduino Uno」を選択します。mBotはArduino Unoをベースにしているため、この設定が必要です。

ポート選択

ツール-> ポートから、mBotが接続されているポート(通常はCOMポート)を選択します。

Arduino IDEの基本的な使い方

Arduino IDEとmCore間の通信デバッグ

ここまでの手順でプロジェクトが問題なく動作することを確認します。PCとmBotを、USBもしくはBluetoothで接続します。

  1. <USB接続の場合>
    PCとmBotのUSBポート間にUSBケーブルを接続します。
  1. <Bluetooth接続の場合>
    PCのUSBポートにBluetoothドングル(別売り)を接続します。
  1. PC接続時点では、「青」で点滅(ゆっくり)の状態です。
  2. Bluetoothドングルのボタンを押すと「青」で(高速)点滅します。
  3. mBotと接続されると「青」の点灯状態となります。
  1. Arduino IDE画面の「ファイル」-> 「スケッチ例」-> 「01.Basics」-> 「Blink」を選択してBlinkプロジェクトを開きます。
  1. 動作を確認しやすくするために、delay()関数の引数を1000⇒100に変更して、プログラムをアップロードします。
    ※200ms間隔でLEDが点滅するようにします。
  1. アップロードが完了すると、mBotのボード上のLEDが青色点滅します。
    ここまでで問題ないことを確認したら、mBotのプログラミングを開始します。

プログラムの作成

ここでは、mBotの工場出荷ファームウェアをベースにプログラムを作成していきます。

新規でプログラムを作成する場合は、「ファイル」-> 「新規スケッチ」を選択します。

  1. 「ファイル」-> 「スケッチ例」-> 「MakeBlockDrive」-> 「Firmware_For_mBlock」-> 「mbot_factory_firmware」を選択して、プロジェクトを開きます。
  1. 変更を加えるプロジェクトは、工場出荷ファームウェアとは区別するために、別プロジェクトとして保存しておきます。
    「ファイル」-> 「名前を付けて保存」を選択し、「mbot_factory_firmware」の保存場所と同階層にフォルダを作成して保存します(ここでは「test_mbot_factory_firmware」としています)。
  1. 作成した「test_mbot_factory_firmware」プロジェクトをベースに変更を加えていくことで、既存処理を流用しながら簡単にプログラムを作成することができます。

mBotの工場出荷ファームウェアでは、3つのコントロールモードが備わっています。
・マニュアルモード
・障害物回避モード
・ライントレースモード

「mbot_factory_firmware」ファイルの一番下にloop()関数があり、その中でmodeA()、modeB()、modeC()を切り替える処理があります。これがそれぞれのコントロールモードの動作となっています。

プログラミング例 ~モードDの動作を追加しよう~

mBotの工場出荷ファームウェアのモードA/B/Cの処理に加えて、モードDのプログラムを追加してみましょう。
※追加個所は「/* modify */」のコメントを追加しています

  1. enum型の定義にMODE_Dを追加します。
enum
{
  MODE_A,
  MODE_B,
  MODE_C,
  MODE_D,/* modify */
};
  1. loop()関数にモードDの初期設定処理と、modeD()関数コール処理を追加します。
void loop()
{
  while(1)
  {
    get_ir_command();
    serialHandle();
    currentPressed = !(analogRead(7) > 100);
    if(currentPressed != pre_buttonPressed)
    {
      if((rgb.getPort() != PORT_7) || rgb.getSlot() != SLOT2)
      {
        rgb.reset(PORT_7,SLOT2);;
      }
      pre_buttonPressed = currentPressed;
      if(currentPressed == true)
      {
        if(mode == MODE_A)
        {
          mode = MODE_B;
          moveSpeed = 200;
          Stop();
          cli();
          buzzer.tone(NTD2, 300);
          sei();
          buzzer.noTone();
          rgb.setColor(0,0,0);
          rgb.setColor(0, 10, 0);/* 緑 */
          rgb.show();
        }
        else if(mode == MODE_B)
        {
          mode = MODE_C;
          moveSpeed = 200;
          Stop();
          cli();
          buzzer.tone(NTD2, 300);
          sei();
          buzzer.noTone();
          rgb.setColor(0,0,0);
          rgb.setColor(0, 0, 10);/* 青 */
          rgb.show();
        }
        else if(mode == MODE_C)
        {
/* modify begin */
          mode = MODE_D;
          moveSpeed = 200;
          Stop();
          cli();
          buzzer.tone(NTD1, 300);
          sei();
          buzzer.noTone();
          rgb.setColor(0,0,0);
          rgb.setColor(10, 0, 0);/* 赤 */
          rgb.show();
        }
        else if(mode == MODE_D)
        {
/* modify end */
          mode = MODE_A;
          moveSpeed = 220;
          Stop();
          cli();
          buzzer.tone(NTD1, 300);
          sei();
          buzzer.noTone();
          rgb.setColor(0,0,0);
          rgb.setColor(10, 10, 10);
          rgb.show();
        }
      }
    }
    switch (mode)
    {
      case MODE_A:/* マニュアル操作 */
        modeA();
        break;
      case MODE_B:/* 障害物回避 */
        modeB();
        break;
      case MODE_C:/* ライントレース */
        modeC();
        break;
/* modify begin */
      case MODE_D:
        modeD();
        break;
/* modify end */
    }
  }
}
  1. modeD()の関数定義を追加します。ここに任意の動作を記述してモードDのプログラムを作成します。
void modeD()
{
/* 任意の処理を記述する */
}
  1. 以上がモードD追加プロジェクトの変更箇所です。このプロジェクトを実行すると、mBot上の切り替えボタンを押した際に、コントロールモードが「マニュアル」⇒「障害物回避」⇒「ライントレース」⇒「モードDの動作」と切り替わります。

まとめ

Arduino IDEを使用することで、mBotのプログラミングは柔軟に対応できるようになります。このブログを参考にして、ぜひさまざまなプロジェクトに挑戦してみてください。

以上が、mBotを使用する際のArduino IDEの導入から使用方法までの基本的なガイドです。この情報が皆さんのプログラミング学習に役立つことを願っています。

コメント

タイトルとURLをコピーしました