ゼロから始めるArduino (2)Arduinoでも「Lチカ」してみよう

ゼロから始めるArduino (2)Arduinoでも「Lチカ」してみよう

前回は、Arduinoがどのようなものかをざっくりとマイクロコントローラの簡単な説明を踏まえてお話しました。今回は実際にArduinoを使用して簡単なシステムを作ってみたいと思います。

★おことわり★

  • 執筆に際して事前に調査・検証は行っていますが、機器の誤った使用などによりお手持ちのハードウェアに対する発煙・発火を伴う物理的な損害を被ることがあります。記載事項の実践に際しては十分な確認を行ったうえでの実施をお願いします。なおこれらの実践により発生した損害について弊社は一切負いません。
  • 都合により本件で掲載しているArduinoハードウェアは互換品またはクローンの場合があります。

とりあえずさわってみよう

LEDの点滅(Lチカ)

ソフトウェア開発において、テスト目的や初めてその言語に触れる場合、伝統的に“Hello World”という文字列を画面上に出力してその動作を確認することがあります。

ハードウェアについても同じような様式のようなものがあり、”LEDを点滅させる(LEDチカチカ->Lチカ)”ことがそれにあたるようです。詳しい理論や用語についてはあとにしてまずは試してみましょう。

準備

Lチカに際して以下のものを準備します。

  • Arduino UNO もしくはその互換品、クローン
  • USB2.0 Type A-B ケーブル
  • Arduino IDEをインストールしたPC

※Arduino IDEのインストール方法については、以下のURLを参照ください。

Install the Arduino Software (IDE) on Windows PCs
https://www.arduino.cc/en/Guide/Windows

Lチカの手順

1. PCとArduinoを用意したUSBケーブルで接続します

Arduino側がType Bコネクタ、PC側がType Aコネクタでの接続です。
作業スペースの都合上、全体を写すことができませんが、概ね以下のような接続イメージです。

Figure 1 ArduinoとPCのUSBケーブルでの接続例

2. [初期設定] Arduino IDEを起動

次に、Arduino IDEを起動します。その際、以下の初期設定を行います。
– [ツール]-[ボードマネージャ]-[Arduino/Genuino Uno] を選択します。

Figure 2 使用するボードの選択

3. [初期設定] シリアルポートの指定

[ツール]-[シリアルポート] からArduinoが接続されているCOMポートを選択します。

Figure 3 Arduinoが使用するシリアルポートの選択

これで初期設定は終わりです。

4. メニューからサンプルプログラムを呼び出し

次に、メニューからサンプルプログラムを呼び出します。呼び出し方法は、次の通りです。
[ファイル]-[スケッチ例]-[01.Basics]-[Blink]

Figure 4 Lチカ用サンプルコードの呼び出し

別ウィンドウが開き、Blinkのサンプルコードが表示されます。

Figure 5 サンプルコードの表示

5. そのままマイコンボードに書き込み

表示したサンプルコードを、 そのままマイコンボードに書き込みます。
[スケッチ]-[マイコンボードに書き込む]を選択すると、コンパイルからバイナリの転送まですべてIDEが行ってくれます。
同じ操作を[ファイル]メニュー下の”➡”アイコンでも行うことができます。

Figure 6 Arduinoへ作成したコードを転送(アップロード)

6. Arduino上のLEDが1秒おきに点滅

転送完了時点でArduino上のLEDが1秒おきに点滅するはずです。

Figure 7 LEDが点滅します

補足

  • ArduinoにUSBケーブルでPCに接続した瞬間に電源が入り、ブート処理が行われます。場合によっては、以前に転送されていた別のコードが自動的に実行される場合があります。一度転送したコードは新たに転送するコードで上書きするまで基本的にそのままです。電源を切っても転送したコードの内容は保持されます。
  • 動作がおかしい場合、左上の赤いボタンがリセットボタンです。必要に応じて操作してください
  • 電源ボタンはないので、USBケーブルの抜き差しで代用してください

動作を変えてみよう

LEDが点滅しましたでしょうか。一連の操作がなんとなくわかったところで、今度はLEDの点滅間隔を変えてみましょう。

1. 前の手順で開いたBlinkを表示

Figure 8 サンプルコードの変更

2. void loop()内を書き換え

void loop()内の、「delay(1000)」を、「delay(500)」に書き換えます。

void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}

3. 保存してマイコンボードに書き込み

必要ならば、変更したコードを保存し、マイコンボードに書き込みます。手順は、先ほどの「5. そのままマイコンボードに書き込みます」内のものと同様です。

4. LEDの点滅間隔を確認

LEDの点滅間隔が0.5秒おきに変わったことが確認できます。

興味があれば、同じくdelay()の値をいろいろ変えて、試してみてください。

5. コードの保存

コードを保存する場合、[ファイル]-[名前を付けて保存]で別ファイルへ保存します。

[保存]を実行してしまうとサンプルコード自体を上書き保存する操作になる場合があるので、注意してください。

まとめ

いかがでしたでしょうか。Arduinoの開発手順について少し流れをつかんでもらえたかと思います。Raspberry Piのそれとはかなり違うことを実感してもらえましたでしょうか。

Raspberry Piとの違い

過去には、このJTP Technology Portでも、Raspberry Piの記事の中で、Lチカを実践しました。この時の手順はRaspberry PiにインストールしているLinuxからコマンドを通じてデバイスファイルに直接アクセスする方法と、同じくそこにインストールされているPythonを使った方法を紹介いたしました。

Arduinoでは、C++に似た言語を使用してPC経由でコードを書いてPC側でコンパイルを行い、できあがったバイナリコードをPCからArduinoへUSBケーブルを使って転送して使用します。いわゆるクロスコンパイル環境での開発になります。

Arduinoで直接開発を行いません。Raspberry Piと同じように開発できないのかと疑問に思われる方もいらっしゃると思います。ArduinoはPCではないので、OSが搭載できるほど性能は高くありません。

また、Arduinoには、Raspberry PiやPCにあったキーボードやマウス、モニター、ストレージをつなげる端子は存在せず、データの入力出力をどのようにするかということについて特定のピンから操作する以外、決まったものはありません。

ちょっとした疑問

今回、さまざまな疑問が出てきたと思います。

  • PCを介さない機器単体でのデータの入力はどうするのか?
  • 同じくデータの出力はどうするのか?
  • コードの文法?

このあたりの詳細を次回以降の記事で解説できればと思います。

次回の内容は?

Arduinoには、専用のハードウェアを用意しなくても、Arduinoの動作を試すことができる環境が、シミュレーターとしていくつか公開されています。次回は、こちらを紹介していきたいと思います。

記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。