記事担当:
ハンダ付け不要-マイコン系


先週に引き続き、Arduino超初心者編です。

前回(★「電工女子、Arduino(アルドゥイーノ)を知りたいです!」)ArduinoIDE(アルドゥイーノ アイ・ディー・イー)をPCにインストールしました。
12arduino8

今回はArduinoIDE内にある「スケッチ例」を利用して、次の手順でLEDを点滅させてみたいと思います。

[ステップ1]
Arduino UNOのデジタル13番ピンに挿したLEDを1秒間隔で点滅させる

[ステップ2]
Arduino UNOのデジタル13番ピンに挿したLEDを3秒間隔で点滅させる


先に動画をご覧ください。


まずは、Arduino IDE(PC上)とArduino UNOの設定をします。

(1)Arduino UNOとPCをUSBケーブルで接続します。
 2-Arduinoつなぐ

(2)Arduino UNO上の「電源LED(緑色)」が点灯しているのを確認
3-電源LED

(3)Arduino IDEのメニューバー「ツール」>>>「ボード」から使用しているArduinoの種類を確認
私は「Arduino/Genuino UNO」を選択。(自動的に設定されていました)
4-ボード選択

(4)Arduino IDEのメニューバー「ツール」>>>「シリアルポート」を確認
(こちらも自動的に設定されていました)
5-ポート選択

これで、Arduino IDEとArduino UNOの設定は完了しました。

次に「Blink」のスケッチをArduino UNOに書き込んでいきます

(1)PC上のArduino IDEのメニューバー「ファイル」から、「スケッチ例」>>> 「01.Basics」>>>「Blink」の順番に開いていきます
6-スケッチ例

(2)Arduino IDEに「Blink」のスケッチ例が表示されます。
7-Blinkスケッチ

(3)「マイコンボードに書き込む (「→」マーク)」をクリック
8-マイコンボードに書き込む

(4)書き込んでいる最中はArduino UNO上の「TX」「RX」のLEDがビカビカっと点滅します。
9-TX_RX点滅

(5)書き込みが無事終わり、「TX」「RX」のLEDが消灯

(6)Arduino UNOの「GND」と「デジタル13番ピン」にφ5の砲弾型LEDを挿します。
10-ピン説明

※電流制限のための抵抗(220Ω)を使用してください。
※LEDには極性がありますから注意してください。
「GND」にマイナス端子(LEDの端子の短いほう)、「13」にプラス端子(LEDの端子の長いほう)を挿します。

(8)GNDとデジタル13番ピンに挿したLEDが1秒間隔で点滅します。→正常動作しています。[ステップ1]成功!
11-13番ピンが1秒間隔点滅

(9)Arduino IDEの「Blink」のスケッチに書かれている「delay(1000)」の数値を変更します。
  「delay(1000)」を「delay(3000)」と書き換えます。(2箇所あります)
12-delay書き換え

(10)GNDとデジタル13番ピンに挿したLEDが3秒間隔で点滅します。→正常動作しています。[ステップ2]成功!
13-13番ピンが3秒間隔点滅

Arduino UNOでLEDを点滅(制御)させることができました!^o^v
が、謎だらけ。。。

疑問1.なぜデジタル13番ピンにLEDを挿したのか。他のピンじゃだめなの?
疑問2.「delay(1000)」って点滅速度を変えるコードなの?そもそもスケッチの内容を理解できていない。

「Blink」のスケッチを見ながら、ひとつずつ疑問を解消していきましょう。
14-Blinkスケッチ

まずは「疑問1.なぜ13番ピンにLEDを挿したのか。他のピンじゃだめなの?」

「Blink」のスケッチの中に「LED_BUILTIN」というコードがありました。
そして、「LED_BUILTIN」というコードについて、www.arduino.ccのページを見ると、このような記述が。。。
13-1-LED_BUILTIN
https://www.arduino.cc/en/Reference/Constants
つまり、「LED_BUILTIN」とはArduino UNOのデジタル13番ピンのことを指すみたいです。(゚A゚;)ゴクリ.
IDEのサンプル例に書かれている「Blink」のスケッチは、デジタル13番ピンに挿したLEDの制御例、ということですね。

次なる疑問。
「delay(1000)」て点滅速度を変えるコードなの?そもそもスケッチの内容を理解できていない
そうなんです。
Arduino IDEからArduinoボードにスケッチを書き込む手順はわかったのですが、肝心なのは、そのスケッチ(Arduino IDEに書いた)の内容。

まず、「/*」「*/」「//」注目!
・Arduinoのスケッチにおいて、「/*」「*/」「//」内の文章は「コメント」である
・「コメント」とはArduinoの指令内容(スケッチ)に関する説明文やメモのようなもの。
・変更しても、削除しても、Arduinoの指令内容(スケッチ)に直接影響を及ぼすものではない
とあらかじめ先輩スタッフさんに教えてもらっていました。

なので、コメント(Arduinoの指令内容(スケッチ)に関する説明文)の部分をざっくり和訳してみました。
15-読み解く

うんうん。なんとなく意味がわかってきました
いえ、まだまださっぱりなんですが、丁寧にコメントを入れてくれているおかげで、Blinkのコードの意味が理解できてきました。

次にコード(Arduino言語)を見ていきましょう。
コメントは「変更しても、削除しても、Arduinoの指令内容(スケッチ)に直接影響を及ぼすものではない」とのことだったので、「Blink」のスケッチからコメント部分を省いてみました。

結果、こんな感じ↓
-----------------------------------------
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(1000);                      
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);                  
}
-----------------------------------------

わ!めっちゃ短かくなった!!^o^
と喜んではみたものの、このコードの意味はやっぱりわからず…(´-ω-`)ションボリです。

digitalWrite」やら「delay」やら、、、Arduino言語、むずかしい・・・。

と、思ったところで、再度、Arduino IDEのメニューバー「ヘルプ」へ。
「ヘルプ」>「リファレンス」をクリックすると、、、
16-リファレンス1

ブラウザにジャンプして、ページが表示されました。
これ、Arduino言語の辞書的なページなんです。
17-リファレンス218-リファレンス3

例えば
、「delay」。
「Blink」のスケッチ例の中に出てきましたね。
「delay(1000)」って書いてました。
19-delay

リファレンスを見ると、「()内で指定された時間、プログラムを一時停止する」指令だということがわかります。
「()」内に表示する数字はms単位。1000ms=1秒。
「delay(1000)」はつまり、『1秒間プログラムを一時停止するコード』ということになります。

そして、「digitalWrite(LED_BUILTIN, HIGH)」。
「digitalWrite(LED_BUILTIN, LOW)」は出力に関する指定をするコードみたいです。
20-digitalwrite

Arduino IDEの「スケッチ例」>>> 「01.Basics」>>>「Blink」の内容はつまり、
『Arduino UNOのデジタル13ピンに挿したLEDが、1秒間点滅(状態で一時停止する)→1秒間消灯(状態で一時停止する)を繰り返す』という内容だったんですね!

おー!!理解できたときの快感!たまらないです!!^^

そして、念には念を。
先輩スタッフさんの言うとおり「コメントは変更しても、削除しても、Arduinoの指令内容(スケッチ)に直接影響を及ぼすものではない」というのは真実なのか・・・?
(べつに先輩スタッフさんを疑ってるわけじゃないですよー(^_^;))

「Blink」のスケッチからコメント部分を削除した内容(コードのみ)で正常動作するのかを試してみました。
21-コードのみ

無事正常動作しました。
22-13番ピンが1秒間隔点滅



ふっふっふっふ。無事成功。
少し理解もできました。満足、満足。^^

ところで、再度IDEを見ると「検証(コンパイル)」ボタンと「マイコンに書き込む」ボタンがあることがわかります。
「検証(コンパイル)」してから、「マイコンに書き込む」べき?
でも、いきなり「マイコンに書き込む」をクリックしても問題なく動作したし、どうなんだろう?

再び先輩スタッフさんに聞いてみたところ、
「マイコンに書き込む」をクリックすると、検証(コンパイル)してくれる。
エラーが出たら、どうせ書き込みできないんだから、「検証(コンパイル)」→「マイコンに書き込む」の順でクリックしても、
「マイコンに書き込む」だけクリックしてもどっちでもいいよ。試しながらスケッチしている時は「検証(コンパイル)」をしながら作業したりするよ』
とのことでした。
23-コンパイル
※「検証」をクリック
24-書き込み
※「マイコンボードに書き込む」をクリック

来週はこれを利用して、店頭にディスプレイしている作例をご紹介していきたいと思います。

それはまた次週!

(記事:ぐっちさん)
更新予定:毎週木曜日(次回は3月30日です!)

★記事内で紹介した商品は、こちらから購入できます!★

商品
型番
個数
一括注文
リンク先
Arduino UNO Rev3 A000066 1個 こちらから→
USB2.0 ケ-ブルA-B 1m 2AB-10 1個
Arduinoをはじめよう 第3版 ISBN9784873117331 1個
LED 5φ 赤 ★受注単位有★ L-513ET 5個
カーボン抵抗 1/4W 5% ★受注単位有★ 220Ω 10個
※個数を記入していますが、リンク先ページ内で変更可能です。