UNOを使ってみる(本体LEDの点灯)(Arduino)
Arduino UNOには、デジタル13番PINにLEDが付けられています。
これを点灯させてみることにします。
今回は、スケッチ(プログラム)してみます。
・・・短いものですが。。。
準備です。
1.PCとArduino UNOをUSBケーブルで接続します。
2.デバイスマネージャーからポート番号を確認します。
Windowsメニューを右クリック→「デバイスマネージャー(M)」→「ポート(COMとLPT)」
※私の設定は、Arduino UNO (COM5) です。
3.Arduino IDE を起動します。
4.対象ボードの設定を行います。
メニュー「ツール」→「ボード」→「Arduino AVR Boards」→「Arduino UNO」
を選択します。
5.シリアルポートの設定を行います。
メニュー「ツール」→「シリアルポート」→〔COM5(Arduino UNO) 〕
2.で確認したポート番号を選択します。
※私の場合は、COM5(Arduino UNO) になります。
6.4.5.の設定内容を確認しておきます。
メニュー「ツール」
・ボードとシリアルポートの選択内容を確認します。
※ここまでの準備(設定)は
UNOを使ってみる(本体LEDの点滅) のページで
画像付きで解説しています。
7.前回最後に使用したスケッチファイルが開かれてきますので、
新規スケッチファイルを用意します。
メニュー「ファイル」→「新規ファイル (Ctrl+N)」
ArduinoIDE は準備出来ました。
さて、どこに何を書けばよいのだろうか?
プログラムの記述ブロックは大きく2つに分かれています。
ひとつは、電源が入りArduinonoの初期化が完了(動作可能状態)したら、
まず最初に行いたいことを書くブロック
void setup() {
// put your setup code here, to run once:
}
と、setup(){ }に書かれた内容を実行したあと、
電源が切られるまで、永遠に繰り返すブロックです。
void loop() {
// put your main code here, to run repeatedly:
}
loop(){ }に書かれた内容は電源を切るまで何度でも繰り替え
されることになります。
Arduinoのプログラム記述は、半角文字が基本です。
全角の文字の混入には注意して下さい。
1.デジタルPINは入出力に使用できます。
このため、どちらで利用したいかを設定します。
今回は、LEDを点灯させたいので出力用に設定します。
(13番PINに5Vを出力したいので、出力と設定します)
この設定には、pinMode( )を使用します。
これらの指示(命令)群を関数と呼んでいます。
※setup()やloop()も関数ということになります。
”pinMode関数”を使用しますという言い方ですね。
pinMode関数の使い方は、
pinMode(ピン番号, モード)です。
今回の設定は、
・ピン番号:13番(13)
・モード:出力(OUTPUT)
pinMode(13,OUTPUT);
となります。
丸かっこの中を引数と言います。
pinMode関数の場合、引数の数は2個で、
第1引数はpin番号、第2引数はモードとなります。
引数は複数ある場合、基本的にはその間を
,(カンマ)で区切ります。
また、関数記述後に;(セミコロン)が付いていますが、
これは、マイコンに与える指示の1文の終わりを意味します。
私たちが文章を書くときに。を付けるようなものでしょうか。
例えば、12番、13番ピンを出力モードに設定する場合、
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
となりますが、
pinMode(12,OUTPUT); pinMode(13,OUTPUT);
と記述しても問題はありません。
文と文の間にある改行やスペースは意味を持たないのです。
このプログラミングでは、;(セミコロン)が文の区切りなのです。
ただし、適切な改行やスペース、インデントは
プログラムを見やすくするために必要です。
もう一つ。
// を付けてその後ろに書かれている内容があります。
// put your setup code here, to run once:
など、これは、コメントと呼ばれるもので、
プログラムの実行には何の意味も持ちません。
// 以降この行の終わりまでコメント扱いとなり、
プログラマが自分のメモなどとして書き残します。
必要以上のコメントは必要としませんが、
後で見たときにどんなプログラムなのか分かる程度の
コメントは必須ですね。
では、この1行をsetup()関数内に記述します。
// 本体LEDの点灯 void setup() { // put your setup code here, to run once: pinMode(13,OUTPUT); // デジタルPIN(13)を出力用として設定 } void loop() { // put your main code here, to run repeatedly: }
2.続いて、LEDを点灯させるため、13ピンに電圧をかけます。
デジタル出力なので、表現的には0か1かです。
実際には、0Vか5V(pinにより3.3V)かになります。
この0か1か(0Vか5V)を設定する関数が、
digitalWrite()です。
digitalWrite関数の使い方は、
pinMode(ピン番号, モード)です。
今回の設定は、
・ピン番号:13番(13)
・モード:5V出力(HIGH)
digitalWrite(13,HIGH);
となります。
では、この1行をsetup()関数内に記述します。
// 本体LEDの点灯 void setup() { // put your setup code here, to run once: pinMode(13,OUTPUT); // デジタルPIN(13)を出力用として設定 digitalWrite(13,HIGH); // デジタルPIN(13)へ5Vを出力 } void loop() { // put your main code here, to run repeatedly: }
完成したスケッチです。
// 本体LEDの点灯
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT); // デジタルPIN(13)を出力用として設定
digitalWrite(13,HIGH); // デジタルPIN(13)へ5Vを出力
}
void loop() {
// put your main code here, to run repeatedly:
}
では、このスケッチをコンパイル(Arduinoが理解出来る機械語に翻訳)
してArduinoに転送(書き込み)します。
まずは、USBケーブルで、パソコンとArduinoを接続されており、
Arduinoの電源LEDが点灯していることを確認します。
上段のアイコンメニューから、右矢印(⇒)の様なアイコンを
クリックします。
※このアイコンにカーソルを合わせると、
”マイコンボードに書き込む”を表示されます。
コンパイルに成功し、Arduinoへの書き込みが始まると、
ArduinoのTX、RXのLEDが点滅し転送作業が行われます。
転送されたプログラムは直ぐに実行され、
13番ピンのLED(L)が点灯すると思います。
たった2行のプログラムですが、動作しています。
プログラムに記述ミスがある場合、エラー表示されます。
この例は、文の終わりを示す;(セミコロン)を入れ忘れています。
このほか、,(カンマ)の入れ忘れや
全角のスペースの混入などいろいろ考えられます。
特に全角のスペースはこのIDEでは分かりづらく、注意が必要です。
Arduinoに転送されたプログラムは、プログラム領域に書き込まれ、
次のプログラムが転送されるまで電源を切っても常駐しています。
そのため、再び電源を入れると、このプログラムがまた実行されます。
最後に転送されたプログラムがArduinoに残ることになります。
Arduinoに転送済みのプログラムを実行したい場合は、
USBケーブルを接続して電源供給するだけで実行されます。
言い方を変えれば、Arduinoは電源が入れられると、
いま常駐しているプログラムを自動的に実行することになります。
※電源供給だけの場合は、DC7V~DC12Vをピンジャック
から供給することも可能です。