Arduino言語で簡単にプログラミング!特徴や文法をわかりやすく解説

Arduino言語というプログラミング言語を見聞きしたことがあるものの、どのような特徴があるか詳しく知らないという方も多いのではないでしょうか。

Arduino言語を使用すると、電子工作のためのプログラムを簡単に作ることが可能です。この記事では、Arduino言語の特徴や文法について、コードの具体例を交えて解説します。

Arduino言語とは?

まずは、Arduino言語がどのようなプログラミング言語かを簡単に紹介します。

C言語をベースに開発されたプログラミング言語

Arduino言語は、「Arduino」と呼ばれるマイコンボードの挙動を制御するためのプログラミング言語です。機械制御などに使用されるC言語をベースとして、より簡単に記述できるようにArduino言語が開発されました。

ArduinoはC/C++をもとに開発されているため、C言語の構造や、C++が持つ一部の機能を使用できます。

シンプルで使いやすく初心者におすすすめ

Arduino言語は、プログラミング初心者でも簡単に扱えるプログラミング言語です。Arduinoのマイコンボードは安価に購入できるため、プログラミングによるハードウェアの制御を学び始める学生にもピッタリです。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

Arduino言語の特徴

Arduino言語はC言語をもとに開発されているものの、関数の書き方やライブラリの種類などにC言語とは異なる特徴があります。Arduino言語に見られる主な特徴は次の通りです。

必ず実行される「setup」「loop」関数が存在

Arduino言語には、デフォルトで必ず実行される関数が存在します。関数に対して処理を追記していくことで、Arduino言語によるプログラムの作成が可能です。

必ず実行される関数は、「setup関数」と「loop関数」の2種類です。これらの関数がないとプログラムが正常に実行されません。

setup関数内に記述された処理は、プログラムの起動時に一回だけ実行されます。loop関数は、setup関数内の処理が終わった後、プログラムを停止するまで繰り返し実行されるメインの関数です。

ここからは、setup関数とloop関数の記述を紹介します。
OSはWindows 11 Home、バージョンはArduino IDE 2.0.4を使用しています。

setup関数に記述する主な処理は、Arduinoのマイコンボードのモード設定などです。loop関数には、Arduinoと接続された電子回路の制御に関する処理を記述します。

「標準ライブラリ」で基本的な操作を簡単に指定

Arduinoの開発環境には、電子工作の操作を指定できる標準ライブラリがあらかじめ備わっています。また、Arduinoのコミュニティメンバーが作成したライブラリをダウンロードし、インストールして使うことも可能です。

標準ライブラリには様々な種類があり、デジタル入力やシリアル通信、A/D変換などの機能を簡単に呼び出せます。

標準ライブラリを使うためのコードは次の通りです。

例えば、マウス操作に関する標準ライブラリ「Mouse.h」を呼び出す場合は、次のようなコードをプログラムの冒頭に記述します。

「#include」を自分で記述する以外に、開発環境の機能を使ってライブラリをインストールすることも可能です。上部メニューから「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を選択しましょう。

ライブラリマネージャーの検索窓に「mouse」などのキーワードを入力して必要なライブラリを探し、「インストール」をクリックします。

インストール完了のメッセージが表示されたら、再び上部メニューから「スケッチ」→「ライブラリをインクルード」を選択し、「提供されたライブラリ」から所定のライブラリをクリックしましょう。

入力画面の冒頭に「#include」から始まるコードが自動的に追記されていれば、ライブラリを利用するための備は完了です。

実際にプログラムを見てみよう

実際のプログラミング画面を見ないと、Arduino言語について理解することは困難です。ここでは、Arduino言語の開発環境であらかじめ用意されているサンプルプログラムを例として、基本的な文法や関数の使い方について解説します。

解説に使用するサンプルプログラムは、Arduinoに接続されたボタンとLEDを制御する「Button」というコードです。Arduino言語の開発環境から「ファイル」→「スケッチ例」→「02.Digital」→「Button」をクリックするとコードを表示できます。

サンプルプログラムの中身は次の通りです。

Arduino言語の文法

Arduino言語に使用できる文字は、記号・英数字ともに半角のみです。全角の文字などが混ざっていると、プログラム実行時にエラーが発生します。

Arduino言語の読み方は、他のプログラム言語や一般的な横書きのテキストと同じです。各行のコードは左から右へ読み、上の行に書かれている処理から順に実行されます。

コードを区切るための記号は「;(セミコロン)」です。ただし、「//」から行末まではコメントとして扱われ、コードとしては無視されるため、末尾に「;」を入力する必要はありません。メモや処理内容などを適宜コメントとして記入しておくと、あとでコードを見たときに意味が分かりやすく便利です。「/*」と「*/」で囲まれた部分も、コメントとして扱われます。

例えば、サンプルコードの次の部分はコメントとしての記述です。

「LEDピンを出力として初期化」や、「プッシュボタンピンを入力として初期化」など、直下のコードの処理内容が説明されています。

「{}」は、関数やループ処理、条件分岐など複数の場面で使用する記号です。「{」には必ず「}」が必要で、対応する記号がない場合はプログラム実行時にエラーが発生します。

例えば、サンプルコードの次の箇所にある「{}」は、「if else」という制御文の一部です。

1つ目の「{}」内にはLEDをオンにするための処理、2つ目の「{}」内にはLEDをオフにするための処理が書かれています。

関数を使うにはプログラムから呼び出す必要がある

Arduinoのマイコンボードの機能は、Arduino言語の関数をプログラム内で呼び出すことで利用できます。

例えば、「Button」のサンプルコードで使われている関数は次の通りです。

     
関数 機能
pinMode(pin, mode); Arduinoのピンを番号で指定し、入力または出力にモードを設定する
digitalRead(pin); Arduinoのピンを番号で指定し、入力されている電圧をHIGHまたはLOWの値として読み取る
digitalWrite(pin, value); Arduinoのピンを番号で指定し、HIGH(5V、3.3Vのいずれか)またはLOW(0V)の電圧を出力する

Arduino言語には上記以外にも様々な関数があり、組み合わせて使うことで電子回路を制御できます。

以上の前提知識を踏まえて、サンプルコードの全文を上から順に読んでみましょう。

25行目はコメントで、「定数は変更されません。ここでは、ピンの番号をセットするために定数が使用されます」という説明が書かれています。

26行目、27行目にある「const int」とは、値を変更しない整数の定数を定義するための文字です。ここでは、「buttonPin」という名前の定数の値を「2」に、「ledPin」という名前の定数の値を「13」として定義しています。

Arduinoのマイコンボードには複数のピンがついていて、番号によってピンの場所を指定することが可能です。サンプルプログラムでは、2番のピンがプッシュボタン用、13番のピンがLED用として設定されています。

29行目のコメントは「変数は値が変更される」という意味です。26、27行目に出てきた「const int」と異なり、30行目の「int」では値の変更が可能な「buttonState」という変数が定義されています。

「buttonState」はプッシュボタンの状態を表すための変数で、初期状態では値が「0」に設定されています。

32行目から37行目は、プログラム実行時に一回だけ実行されるsetup関数です。34行目の「pinMode(ledPin, OUTPUT);」で13番のピンを出力用に設定、36行目の「pinMode(buttonPin, INPUT)」で2番のピンを入力用に設定しています。

39行目から51行目までは、プログラムの実行中に繰り返し処理されるloop関数です。

41行目の処理で、「buttonState」という変数の値を、digitalRead関数で読み取った「buttonPin(Arduinoの2番のピン)」の値に変更しています。

例えば、プッシュボタンが押されてオンになった状態では、電圧の変化がArduinoの2番のピンを通じて読み取られ、「buttonState」という変数の値が「HIGH」に変更されます。オフの状態では、「buttonState」の変数の値は「LOW」です。

44行目の「if (buttonState == HIGH)」では、「buttonState」の値がHIGHであるかが確認されます。値がHIGH、つまりプッシュボタンが押されている状態なら、46行目のコードが実行され、47行目以降の「else{}」内のコードはスキップされます。

46行目は「ledPin(Arduinoの13番のピン)」を「HIGH」に設定するコードです。出力用のピンが「HIGH」になると、5Vまたは3.3Vの電圧が出力され、マイコンボードに接続されたLEDが光ります。

反対に、「buttonState」がHIGHではなくLOWだった場合、46行目のコードはスキップされ、「else{}」内に書かれた49行目のコードが実行されます。

49行目のコードは「ledPin(Arduinoの13番目のピン)」を「LOW」に設定する処理です。「LOW」に設定されたピンの電圧は0Vとなり、LEDは光りません。

以上のような仕組みによって、Arduinoに接続されたプッシュボタンの状態をもとに、LEDのオン・オフを切り替えることができます。

Arduino言語の開発環境では、他にも様々なコード例を利用可能です。LEDやプッシュボタンなどを使った簡単な電子回路を作り、Arduino言語を使ったプログラミングを試してみましょう。

シンプルで使いやすいArduino言語なら、初心者でも簡単にマイコンボードの制御に取り組めます。Arduinoを使った電子工作に興味がある方は、ぜひArduino言語によるプログラミングを学んでください。