記事

はじめてマイコン・ボードArduinoを使ってみる(6)

次へ

サンプル・プログラムBlinkの実行準備
 ArduinoIDEを起動し、USBケーブルでArduinoUnoとPCを接続します。ArduinoIDEが、

  • 接続されたマイコン・ボードの種類
  • シリアル・ポート番号

が正しく認識されていることを確認します。これらがArduinoIDEに正しく設定されていない場合は、次に示すようにArduinoIDEのメニュー・バーのツールでそれぞれ設定します。

 ツール>マイコン・ボード>ボードマネージャから該当するボードを選択する

zu1.png

 ツール>シリアルポート>シリアルポートのリストから該当するポートを選択する

zu2.png


 シリアル(COM)ポートのリストには、Arduinoのマイコン・ボードの場合についてはCOMポート番号と合わせてボードの種類名が表示されますので、選択がしやすくなりました。
 次に示すように、メニュー・バーのツールを選択して表示されるリストには選定されているマイコン・ボード、シリアル・ポート番号が表示されます。しかし、このマイコン・ボード名、シリアル・ポート番号は設定されているもので、ポート名、ポート番号が実際に接続されているものと同一であること確認する必要があります。ボードを差し替えた場合は、必ずボード名、COMポート番号を確認し設定します。同種のArduinoマイコン・ボードであればボードは同種ですの再設定の必要はありませんが、COMポート番号は異なりますので、確認、設定が必要となります。

zu3.png

 以上の作業が完了するとArduinoのマイコン・ボードにプログラム(スケッチ)を書き込むことができるようになります。

コンパイルとアップロード
 サンプル・プログラム(スケッチ)のBlinkをArduinoIDEが読み込み、ソース・プログラム(スケッチ)をエディタのペインに展開します。展開したら、次に示すようにエディタのペインにソース・プログラム(スケッチ)が表示されます。
 まずサンプル・プログラムをそのまま動かしてみます。ツール・バー(濃い緑色)のアイコンの上に、マウス・ポインタを乗せると次に示すようにそのアイコンの表示が白くなり、右横に機能の説明が表示されます。このツール・バーの左端にある検証アイコンをクリックして、プログラム(スケッチ)にエラーがないことを確認します。クリックするとアイコンが橙色になり、検証などを実行します。

zu44.png

 ツール・バーの横矢印アイコン(左から二つ目)をマウスで選択すると、次に示すように「マイコン・ボードに書き込む」という、ボードへのプログラムの処理を行うアイコンであることが確認できます。

zu445.png


 このアイコンをクリックするとアイコンは橙色になり、処理を実行中であることを示します。プログラムをコンパイルし、マイコン・ボードに書き込む実行可能なファイルに変換し、変換したプログラムをマイコン・ボードに書き込む一連の処理がまとめて行われます。

image009-75da483f.jpg

 プログラムの書き込みが完了すると、「マイコン・ボードへの書き込みが完了しました。」と表示され、その下にプログラムの大きさなどコメントが表示されます。初めのうちはあまり大きさも問題になりません。

image011-e0e16038.jpg


●プログラムの書き込みの手順
◆マイコン・ボードをリセットする
 コンパイルが完了したらArduinoIDEはUSBケーブルを通じて、マイコン・ボードをリセットします(自動で行われる)。リセットされたArduinoのマイコン・ボードは、次の動作を行います。

  • マイコン・ボードの初期化を行い
  • シリアル・ポートからArduinoIDEからプログラムの書き込み要求がないか確認

 ArduinoIDEはマイコン・ボードのリセット後、ボードの書き込み準備ができるの待っているので、マイコン・ボードからプログラムの書き込み準備ができた確認が得られるとプログラムをマイコン・ボードに送信します。
マイコン・ボードは受信したプログラムをマイコンのメモリに書き込む
 マイコン・ボードはArduinoIDEから送信されてきたプログラムをマイコン・ボード内に書き込み、プログラムの書き込みが完了すると、今書き込んだプログラムの実行を開始します。
 マイコン・ボードはリセット後、ArduinoIDEからのプログラムの書き込み要求がない場合はマイコン・ボードに書き込まれたプログラムに制御が移ります。
 このようにArduinoのマイコン・ボードの初期化プログラムは、

  • 自分自身で実行するプログラムを読み込み自らのボードに書き込み
  • その読み込んだプログラムに実行権を受け渡す

というしくみも持っています。そのため、初期化プログラムをArduinoのブートローダとも呼んでいます。
TX、RXのLEDが点滅する
 プログラム(スケッチ)の書き込み時には、Arduinoのマイコン・ボード上のTX、RXのLEDが激しく点滅します。プログラムの大きさに応じて点滅している時間も長くなります。プログラムの転送(書き込み)が終わるとLEDの点滅も終わり、後は書き込まれたプログラム(スケッチ)の指示に従った動きを開始します。

zu5.png

Lはディジタル・ポート13に接続されたLED
 Arduinoのマイコン・ボード上には、次に示すようにLと表示されたLEDが搭載されています。
 ArduinoUnoの場合は、ディジタル・ポート13がHIGHのときにこのLEDが点灯し、LOWのときにこのLEDが消灯するように接続されています。

 このLEDに流れる電流がディジタル・ポート13のポートに接続されるデバイスに影響を与えないように、OPアンプが利用されています。ディジタル・ポートの回路をOPアンプLMV358が監視し、ディジタル・ポートの出力電流を消費することなくLEDを点滅することができるようにしています。LMV358はボルテージ・フォロアとして電圧増幅度は1ですが、電流は60mAまで流せます。これでディジタル・ポート13に影響を与えずLEDに十分な電流を供給できます。

digitalWrite(13,HIGH) ;  でLED点灯


 BlinkのプログラムでdigitalWrite(13,HIGH) を実行したあと、次に示すようにLと表示されたLEDが点灯します。

zu6.png

 delay(1000)の待ち時間の後、LのLEDはdigitalWrite(13,LOW) で消灯します。その後同様にdelay(1000)の待ち時間LEDを消灯した後loop()関数の先頭に戻り、点灯と消灯を繰り返します。

zu7.png

◆delay()関数の値を変更してみる
 プログラム(スケッチ)のdelay(1000) の1000と設定されている値を、500や2000などと変更したプログラムを実行してみて、LEDの点滅の状態がどうなるか確認してください。

●ブレッドボード上のLEDを点滅する
 ディジタル出力のdigitalWrite(13,HIGH) の13は、ディジタル・ポート番号を示します。この値は0~13までの値を指定できます。次の出力状態の指定はHIGHまたはLOWのどちらかです。ブレッドボードのLEDはディジタル・ポート11に接続されています。このLEDを点滅させるためには、digitalWrite命令のポート番号を11に変更します。

●ポート変数で指定
 変更に当たって、今後のことを考えて点滅させるLEDを接続するポートを変数で指定することにしました。
 変数の指定は、プログラムの最初に行います。定義を記入する場所は、setup()関数の前です。次のように整数の変数として定義し11の値を代入しています。

   int blinkport=11;


 ディジタル出力の命令は、ディジタル・ポートの指定を13と数値で行っていたものをblinkportと変数の指定にしました。変更したプログラムをArduinoUnoに書き込むと、次に示すようにディジタル・ポート11に接続したLEDが点滅を開始しました。

zu8.png

●修正したサンプル・プログラムの保存
 linkなどのサンプル・プログラムは、不用意な扱いで変更されることを避けるため読み込み専用で書き込み禁止のファイルとなっています。そのため、Blinkの読み込み保存処理を行おうとすると、次に示すような警告のメッセージが表示されます。

image021.png


 「名前を付けて保存」を選択しBlinktest01の名前にして、Arduinoのプログラムをフォルダに保存しました。保存したプログラムは不要なコメントをはずし、次のようになりました。

image023.png

 次回から、ディジタル入力、アナログ入力、アナログ出力の確認を行っていきます。

(2016/1/2 V1.0)

<神崎康宏>

バックグラウンド

正しく認識;最近のArduinoIDEのバージョンは、つないだだけでボードとシリアルポートを認識してボード名、COMポート番号をリストに表示します。設定のためのリストからの選択が容易になりました。Unoと同等品のなかで、USB-シリアル変換に独自のデバイスを搭載している場合は、このかぎりではありません。

アップロード;慣用的に、マイコンに実行形式のプログラムを書き込むことを指します。

OPアンプ;オペアンプと読みます。Operational Amplifierの省略形で、直訳すれば演算増幅器です。積分器を実現するために作られましたが、現在は、増幅器もしくはフィルタとしての利用が多いようです。

TX、RX;マイコン・ボードはプリント基板と呼ばれ、表面に、文字が印刷してあります。シルク印刷と呼ばれます。全体に青色や緑色をしているのはレジスト膜と呼ばれ、この色に対して判別しやすい色がシルク印刷に選ばれます。多くは白色です。

HIGH LOW;Arduinoで予約されている定数です。ユーザのプログラムで独自な変数などにこの単語は使いません。LOWをディジタル出力ポートに設定すると0V(最大0.5~0.7V)、HIGHは、電源が5Vのときは4.2V以上、3Vのときは2.3V以上の電圧が出ます。

digitalWrite(13,HIGH);ここで13はディジタル・ポートを直接指定しています。C言語では直値といいます。プログラムの中で1か所しか出てこないのなら、直値でかまいません。複数回出てくるなら、変数にして、プログラムや関数の最初に記述していたほうが、もし、数字を変更する際、修正漏れが起こらないというメリットがあります。

整数の変数;変数はプログラムの中で値が変わるときに使います。なので、今回のように11に特定な値に決めうちなので、定数(じょうすう)としてもいいわけです。整数の英語表記はintegerです。変数の型を表すintを変数の前につけて、データの型が整数であると規定します。整数は2バイトです。変数はRAMの領域に用意されます。

link;一言でコンパイルすると説明していますが、裏では、実行時に使われるライブラリの必要な部分との結合=linkなどが行われて、最終的に実行型のプログラムが出力されます。

COMポートが正しくない;プログラムが書き込まれるときにTX/RXが光らないときには、COM(シリアル)ポートが正しいかを確認します。
(1)左下のスタート・メニューのアイコンをマウスで右クリックして、出てきたリスト・メニューから「コントロールパネル」を選択。その中のハードウェアとサウンドをクリック

zu11.png
(2)デバイスマネージャをクリック

zu12.png
(3)ポート(COMとLPT)をクリックして展開して、Arduinoの名前の横にある、ここではCOM6がCOMポートの番号になる。

zu13.png

次へ

連載メニュー はじめてマイコン・ボードArduinoを使ってみる

(1)  マイコン・ボードArduinoの開発は無償ツールで行える

(2) 開発環境のArduinoIDEをインストール その1

(3) 開発環境のArduinoIDEをインストール その2

(4) 開発環境ArduinoIDEをマスタする

(5) 動作確認をするためにLEDの点滅を行う

(6) サンプル・プログラムBlinkの実行準備

(7) スイッチが押されたときにLEDが点灯するプログラムを作る

(8) 入出力命令とif文を使ったプログラム

(9) シリアル・モニタを使うとプログラムの動きがよくわかる