Arduino 入門
Lesson 02
【ダイオード点滅編】
「Arduino」を使ったマイコンのプログラミングを子供と一緒に学習するブログ。
少しずつ、子供と一緒に楽しみながら気長にアップしてく予定です。
本日はLesson 02 【ダイオード点滅編】です。
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
Lesson 02では、Arduinoの内蔵LEDを点滅させるためのUNOのコントロール方法と、プログラムについて説明していきます。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
Lesson02目標
UNO R3には、スケッチから制御できるダイオード(LED)があります。
このLEDはUNO R3に実装(基板上にあるということ)されています。
基板上で下図赤枠と黄色←で示したところです。
このLEDはPCとUNOを接続すると、初めから点滅しています。
これはすでに「Blink」と呼ばれるスケッチ(プログラム)がインストールされているためです。
※スケッチ(sketch)とはプログラムのことです。
本Lessonでは、この「Blink」のプログラムを変更することで、点滅するスピードを変更し自分の好きなように点滅させることが目標です。
準備
IDEには、サンプルのスケッチが初めからインストールされています。
本日はそれを利用します。
サンプルスケッチの中に、ボード上のLEDを点滅させるためのスケッチが入っています。
ロードして使用していきたいと思います。
スケッチのロード
IDEの画面にて「ファイル」⇒「スケッチ例」⇒「01.Basics」⇒「Blink」を選択しスケッチをロードします。
新しい、IDEのウインドウが開きます。
ウインドウにはBlinkのスケッチが記載されています。
読み込んだスケッチは読み取り専用となっていますので、このままでは編集し保存ができません。
まずは、新しく開いたIDEの画面にて「ファイル」⇒「名前を付けて保存」を選択し、自分の好きな名前で保存してください。
今回は「02Blink」で保存します。
保存すると、IDEの画面が02Blinkに代わっているのがわかるかと思います。
次回IDEを立ち上げたときに、保存した「02blink」を読み出したい場合は、「ファイル」⇒「スケッチブック」⇒「02blink」を選択すれば良いです。
スケッチの内容
スケッチの内容を説明していきます。
ブログ内で「スケッチ」、「コード」などがでてきます。
どちらも、プログラムのことで同じです。
そのときの気分で、私の言い方がかわります。。。
すみません。
おすすめの入門書
このブログに記載の内容で進めていけるはずですが、下記に紹介するArduinoの入門書をいずれか1冊手元に置いておくことをお勧めします。
なくても、進められますがより理解度が深まると思います。
2.みんなのArduino入門
3.これ1冊でできる!Arduinoではじめる電子工作 超入門
これからArduinoを学習していこうと考えている方は「Arduinoをはじめよう 第3版」は必須かと考えます。
blinkスケッチのコマンド説明
スケッチの内容について説明していきたいと思います。
このスケッチの大部分はコメントで構成されています。
/* ~ */
の間はコメントとなります。
また、//の後もコメントとなります。
それ以外のところを説明していきます。
コマンド | 説明 |
void setup() | 電源投入時やリセットボタンが押された時など、 なんらかの理由でボードがリセットされたときに 1回だけ実行されるコマンドです。最初の1回だけ実行したいことを記載する場所となります。 初期設定を記載する箇所と考えていただければ良いです。 voidは何も返さないという時に使用します。 voidの後にあるsetup()を実行しても値を何か返すものではないからです。あまり深く考えず、void setup()は初期設定するところと捉えておいてもらえれば良いかと思います。 書き方のルールは{ }の間に指示を書くということです。 |
void loop() | スケッチにループ機能を持たせます。 繰り返し指示を出したいことを書きます。セットアップとはことなり、コマンドの実行が終了したのち、すぐに再実行されます。 書き方のルールは{ }の間に指示を書くということです。 |
pinMode(LED_BUILTIN, OUTPUT); |
Arduinoのピン設定のコマンドです。 インプットかアウトプットのいずれかに設定します。 ここではOUTPUTに設定していることになります。 Arduinoに何かをさせたい時はアウトプットに、Arduinoに何かを調べさせたいときはインプットにします。 変数「LED_BUILIN」がOUTPUTに設定されます。 またスケッチ内に記載はありませんが、Arduinoの13番ピンに割り当てられることになります。コメント部分に、「it is attached to digital pin 13」とあることに注目ください。コマンドの最後は「;」で終わるという決まりとなっています。 |
digitalWrite(LED_BUILTIN, digitalWrite(LED_BUILTIN, |
「LED_BUILTIN」で設定してあるピン(※ここでは13番ピン)を、「HIGH」、「LOW」にするコマンドです。ON/OFFしていると思っていただければ良いです。
実際には こちらも、コマンド最後の「;」をお忘れなく!! |
delay(1000); | こちらは、遅延コマンドです。 ()内で設定した数値の分だけ、待てと指示を出すということです。 単位は1/1000秒であり、 1000を設定した場合、1秒間待てと指示することになります。しつこいですが、コマンドの最後は「;」 |
blinkスケッチ
下記にスケッチ(コード)を示します。
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); //13番ピンをOUTPUTと認識しなさい。 } void loop() { digitalWrite(LED_BUILTIN, HIGH); // LEDをONしなさい。 (5V出力) delay(1000); // 1秒待ちなさい! digitalWrite(LED_BUILTIN, LOW); // LEDをOFFしなさい。(0V出力) delay(1000); // 1秒待ちなさい! }
delay(1000)の数値を変えることでLEDの点滅間隔がかわります。
上記スケッチは1秒間隔でLEDを点滅させることになります。
実践
Lesson01で実践したように、PCとUNOを接続し、IDEを立ち上げてください。
すでに一度ポート設定をしているので認識しているはずです。
もしくはIDEのツール⇒シリアルポートで表示されているCOMポートを選択してください。
また、「ツール」⇒「ボード」の所で、ボードタイプが正しく選択されているかの確認も念のためしてください。
※ボード情報がわからない場合は、「ツール」⇒「ボード情報を取得」を選択すれば自分が使用しているボード情報がでてきますので確認してみてください。
準備ができたところで、さっそくスケッチをアップロードしてみましょう。
マイコンボードに書き込むボタンを押す。(下図黄色枠)
「スケッチをコンパイルしています…」となります。
また、ボード上のLEDがチラつくのがわかると思います。
書き込みが終わると
「ボードへの書き込みが完了しました。」となります。
いかがでしょうか?LEDが1秒間隔で点滅しているのがわかりますでしょうか?
わかりやすくするために、delay(1000)の部分をdelay(100)に変更してボードへ書き込んで見てください。
0.1秒間隔で点滅するので、コマンドを書き換えたことが実感できるかと思います。
他にも、最初のdelay(1000)、次のdelay(100)、または、delay(100)、次のdelay(1000)など好きなように変えてみてください。
たったこれだけですが「自分自身で点滅の間隔を制御できる!」ということに子供はとても喜びます。
考えてみてください。
普段は制御されているものに従って動いている自分が、制御する側に回る感覚。
私も子供も大喜びです。
まとめ
Lesson 02ダイオード点滅編はここまで。
次回は、Lesson 03 【ダイオードの輝度変更編】です。
UNO R3に抵抗、ダイオードを接続し簡単な回路を組んで制御をします。
購入した製品の良いところは、ブレッドボードがついていること。
半田を使用せずに回路を組んで動作を確認できます。
子供と一緒に楽しむのには、本当にありがたいです。
補足
今回ArduinoのIO制御が少しだけでできましたが、できればボード内部の接続などがどうなっているかどこかの機会に説明したいです。
ACアダプタに接続した場合、供給される電源は「5V」ではないはず。
どこかで変換しているはずでは?
などなど、やっぱりそういうところも知っておいたほうが楽しめます。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント
いわひろさま、
コメントありがとうございます。
サーバー切り替えタイミングでコメントがあったため記載いただいた
コメントを移行できませんでした・・・。m(__)m
✔の検証ボタンではエラーはでないということでしょうか?
→の書き込み時のみにエラーですか?
また、1000の場合は書き込みできたということでしょうか?
IDEにて
ツール→ボード→Arduino AVR Boards
にて所望のボードを選択していますでしょうか?
いわひろ、さまからいただいたコメント
——————————————————–
お世話になります。
こちらのレッスンを拝見させて頂きながら初めてプログラミングに挑戦してる者です。
いつもありがとうございます。
同じELEGOO mega2560
でやってみてるんですが、Blinkを1000から2000にスケッチしてボードに書き込もうとしてもエラーを起こしてしまって、実行できません。
リセットボタンを押したりUSBから抜き
差ししてみましたが、何度やっても同じです。
そもそもパソコンもあまり詳しくないのですが、原因が分かられますか?
アップロードが終わると、何もしなくても実行されるのですね。
やはり、初めてのプログラムは感動しますね。
ところで、止める(やめる)時は、いきなりUSBを抜いても、良いものでしょうか?
ピカピカ光ってる時に・・・電源ボタンとか無さそうですし。
あと
>たったこれだけですが「自分自身で点滅の感覚を制御できる!」
>ということに子供はとても喜びます。
ここの漢字は(感覚)->(間隔)ですね。
重箱のスミで、ごめんなさい。
コメントありがとうございます。
また、ブログ読んでいただきありがとうございます。
>止める(やめる)時は、いきなりUSBを抜いても、良いものでしょうか?
はい、問題ありません。
arduinoには電源ボタンがありませんので、やめるときは電源を引っこ抜いてください。
また、誤字脱字のご指摘ありがとうございます。
助かります!