Arduino IDEプログラミングの基礎とシリアルモニターの使い方

Arduino IDEを初めて使う方向けに、プログラム(スケッチ)の作り方と基礎的な知識を解説しています。また、プログラムの検証に使えるシリアルモニターの使い方を、実際にスケッチを動かしながら解説しています。

更新日 : 2020年7月25日

前準備

Arduiono IDEのインストールがまだの方は、以下の記事を参照して下さい。

Arduino IDEのインストールと設定 (Windows, Mac, Linux対応)

Arduino IDEは世界的にも有名なマイコンボード用開発環境の一つで、初心者やプログラミング学習、小規模システム開発に適しています。本記事では、Arduino IDEやマイコンボードとは何か?といった点から、実際にインストールして使う手順を分かりやすく解説しました。Windows, Mac, Linuxなど、複数のOSでの手順も載せております。

Arduino IDE用プログラム(スケッチ)のファイル構成

Arduino IDE用のプログラムのことを、公式には「スケッチ」と呼びます。スケッチはディレクトリ(フォルダ)とその中にあるプログラムを記述したファイル(ソースコード)で構成されます。必須なのは拡張子inoのファイルのみです。inoファイル名はディレクトリ名と同じにする必要があります。それ以外のファイルはオプションで、規模が大きくなってきたときに分割したりする目的で利用しますが、最初は気にしなくて構いません。以下が「MySketch」というスケッチの構成例です。

スケッチの新規作成

実際にスケッチを作成してみましょう。「ファイル->新規ファイル」をクリックすると空のスケッチが適当な名前で生成されます。初回起動時など、この操作がなくても自動で生成されることもあります。

スケッチに名前を付けて保存しましょう。「ファイル->名前を付けて保存」をクリックして、好きな名前で保存します。ここでは「MySketch」としましょう。

これでMySketchディレクトリとMySketch.inoファイルが保存されます。後で再度このスケッチを編集したい場合は「ファイル->開く」からinoファイルを開きます。なお、Arduino IDEは最後に編集していたスケッチを自動で開くようになっています。

Arduino IDEプログラミングの基礎

先程作成したスケッチの中身を見てみましょう。setupとloopという名前の関数(一連の処理をまとめたもの)がありますね。この2つが最低限必要な関数になっていて、マイコンが起動するとsetup(){から}までに書いてある命令を1回実行します。その後loop(){から}に書いてある命令を繰り返し実行し続けます。

//で始まる行はプログラムの命令ではなく、コメントと言って注意書きのようなものです。ですので、今は中身は何もありません。ここに自分が動作させたい内容を記述していくことになります。

Arduino IDEの文法はほぼC++言語と同じです。仕様を知りたい方は公式のLanguage Referenceを参照して下さい。

本記事では、「習うより慣れろ」ということで、実際に動くスケッチ例をマイコンボードに書き込んで動かしてみましょう。細かい文法を学ぶのは後からでも問題ありません。

対象製品

これ以降で使うスケッチ例では基本的な機能のみを使っているため、Arduino IDE対応のほとんどのマイコンボードで動作すると思いますが、実際に動作確認を行っているのはArduino UNO、および当Indoor CorgiのArduino IDE対応のすべての製品となります。

シリアル通信スケッチのコンパイル

ここでは、シリアルモニターの使い方も説明するため、シリアル通信でメッセージを送るスケッチ例を用意しました。以下の内容を上で作成したMySketchにコピーして下さい。それぞれの命令の後にはセミコロン「;」が必要になります。

int counter = 0;  // counterという名前の変数を用意して、0をセットする

void setup() {
  // 起動後、この中の内容が上から順に1回実行される
  Serial.begin(115200);             // シリアル通信の準備をする
  while (!Serial);                  // 準備が終わるのを待つ
  Serial.println("プログラム開始");    // シリアル通信でメッセージをPCに送信

  // 最後まで実行された後はloop関数に移行する
}

void loop() {
  // setup関数が終了すると、この中の内容が上から順に何度も実行されつづける

  Serial.print("カウンターの値 ");     // シリアル通信でメッセージをPCに送信
  Serial.println(counter);         // シリアル通信でカウンターの値をPCに送信
  counter = counter + 1;           // カウンターの値を1増やす
  delay(1000);                     // 1000ミリ秒(1秒)待機

  // 最後まで実行された後はloop関数の先頭に戻る
}

作成できたら「検証」ボタンを押すとコンパイルが実行されます。これは記述したコードを解析してマイコンが理解できる形式に変換する作業になります。

問題なく終了すると、下部メッセージエリアに「コンパイルが完了しました」と表示されます。

エラーが発生した場合は問題の箇所と理由が表示されますので再度コードをチェックして下さい。見た目ではわかりにくいのですが、全角スペースがあるとエラーになるのでご注意下さい。スペースは半角を使用して下さい。

スケッチの書き込み

次に作成したスケッチを書き込みます。PCとの接続方法や書き込み方法は使用するマイコンボードによって異なりますので、それぞれの説明を参照して下さい。Indoor Corgi製品の手順は以下の記事を用意しています。

Arduino UNOをお使いの場合はUSBケーブルでPCと接続後、「ツール->ボード」と「ツール->シリアルポート」でArduino UNOを選択して下さい。

その後、「マイコンボードに書き込む」ボタンをクリックする書き込みが行われます。

万一失敗した場合は、下部の黒い領域にエラーメッセージが表示されます。ボードとの接続、書き込み手順をご確認下さい。

シリアルモニターで動作確認

書き込みができたら、いよいよ動作確認です。今回作成したスケッチは、書き込みにも使用したUSBケーブルを経由して、PCにメッセージを送るようになっています。コードの中のSerial.printがメッセージを送る命令です。Serial.printlnも同様ですが、最後に改行してくれる点が違います。

Arduino IDEにはこのように送られてきたメッセージを表示する機能が装備されています。右上のボタンから「シリアルモニタ」を起動します。

正常に受信するには、送信側と速度を合わせる必要があります。送信側はSerial.begin(115200); 命令で設定されているので、シリアルモニター画面右下から115200bpsを選択します。

これで受信準備は完了です。マイコンボードのリセットボタンを押してスケッチを最初から実行させましょう。(ボードによってはリセットしなくても最初から実行するものもあります)

以下のように1秒おきにカウンターの値が増えていくメッセージが表示されたら成功です。

カウンターの値が増えていく理由について説明しておきましょう。スケッチの最初の行でカウンターとして「counter」という名前の変数を用意して0を最初にセットしています。変数は色々な値を入れておける入れ物のようなものです。

int counter = 0;  // counterという名前の変数を用意して、0をセットする

loop関数の中でcounterの値を送信しています。その次の行で、counterの値が現在の値+1に変更されます。変数 = xxx と書くと右辺の値が変数にセットされる決まりになっているためです。loop関数は繰り返し実行されるので、そのたびに値が増えていくことになります。

  Serial.println(counter);         // シリアル通信でカウンターの値をPCに送信
  counter = counter + 1;           // カウンターの値を1増やす

このように、シリアル通信では単純な文字だけでなく、変数の値も送信することができます。そのため、変数の値を確認することでプログラムが期待通りに動いているかの検証にも使用できます。

まとめ

Arduino IDEのプログラミングの基礎とシリアルモニターの使い方の解説は以上です。プログラミングの学習は、サンプルを実際に動かしてみるのが一番です。Arduinoシリーズ用であれば「ファイル->スケッチ例」に様々なサンプルが収録されています。Indoor Corgi製品は各製品ページのサンプルプログラム、および応用例を公開しています。ぜひご利用下さい。

Arduino IDEライブラリのインストールとディレクトリ(フォルダ)構成 (Windows, Mac, Linux対応)

Arduino IDE向けに様々なライブラリが公開されています。本記事では、Arduino IDEのライブラリのインストール方法と、ディレクトリ構成(Windows, Mac, Linux対応)とについて解説しています。ライブラリを使うことで、より高度なアプリケーション開発にチャレンジしたり、自分の作りたい部分のプログラミングに集中することができるようになります。

ESP-SensorCam (ESP-WROOM-02搭載 WiFi/カメラ/明るさ/人感 IoTカメラ基板)

Arduino IDEで動作を自由にプログラミング可能なホームIoTカメラ基板です。WiFi内蔵マイコンであるESP-WROOM-02を採用しました。カメラと人感センサー、明るさセンサー(一部オプション)搭載。人が近づいたら写真を撮影、スマホからモニタリング、明るさの記録、といった使い方が可能です。

CG-CustomARGB (Arduino IDEでプログラミング可能なアドレサブルRGB LEDコントローラー)

発光パターンを自由にプログラミング可能なアドレサブルRGB LEDコントローラーです。市販のコントローラーではできないようなイルミネーションを自作できます。世界的に有名なArduino互換機として設計しており、未経験者でも簡単にプログラミングできるチュートリアルとサンプルプログラムを提供しています。