.. include:: /index.rst :start-after: start_hello_message :end-before: end_hello_message レッスン3: Arduinoとコーディングの世界へ ===================================================== 前回のレッスンでは、ロッカーボギーサスペンションシステムを無事に組み立てました。しかし、それを機能させるためには、電源、制御ボード、そして動作を指示するプログラミングが必要です。 そこでこのレッスンでは、使用する制御ボードとプログラミングプラットフォームについて学びます。 .. image:: img/upload_blink.gif コースの目標 --------------------- * Arduinoの基本概念と機能を理解する。 * SunFounder R3 Boardについて学ぶ。 * Arduino IDEをインストールし、そのインターフェースに慣れる。 * Arduinoプログラミングの基本構文ルールを学ぶ。 コースの教材 -------------------- * SunFounder R3 Board * Arduino IDE * USBケーブル * コンピューター Arduinoの紹介 ------------------------------------------ 様々な場面で「Arduino」という言葉をよく耳にしたことがあるかもしれませんが、それは正確には何であり、なぜこれほど人気があるのでしょうか? Arduinoは、ハードウェアとソフトウェアの両方のアプリケーションに使いやすいオープンソースの電子プラットフォームです。身の回りの物理的な世界を感知し制御できるデジタル機器やインタラクティブなオブジェクトを作成するために設計されています。 では、詳しく説明しましょう: * **オープンソース**: オープンソースはコミュニティガーデンのようなものだと考えてください。誰でも使用でき、誰でも貢献でき、誰でもその恩恵を受けられます。オープンソースでは、物理的な部品(ハードウェア)の設計もプログラミングの指示(ソフトウェア)も自由に共有されます。つまり、誰でもそれらを使用したり、改良したり、独自のバージョンを作成したりできます。すべては共有と創造性に関するものです! .. image:: img/arduino_oscomm.png :width: 400 :align: center * **マイクロコントローラー**: マイクロコントローラーはArduinoの頭脳のようなものです。シンプルなソフトウェアを実行できる小さなコンピューターです。今使っているコンピューターほど強力ではありませんが、センサーからのメッセージを理解したり、LED(小さなライト)を点灯させたりするような単純なタスクには最適です。 .. image:: img/arduino_micro.jpg :width: 500 :align: center * **開発ボード**: 開発ボードは、頭脳を支える身体のようなものだと考えてください。マイクロコントローラーが搭載されているボードで、マイクロコントローラーが外界と対話するのを助ける他の部品が含まれています。これらの部品には、発振器(タイミング調整に役立つ)、電圧レギュレーター(電力レベルを制御する)、電源とデータ用のコネクター(家のプラグやスイッチのようなもの)が含まれます。 .. image:: img/arduino_board.png :width: 600 :align: center * **Arduino IDE**: これはArduinoのための教室のようなものです。コンピューター上で動作するプログラムで、Arduinoに何をするべきかの指示を書くことができます。これらの指示はC++ベースのプログラミング言語で書かれます。指示を書いたら、USBケーブルを使ってArduinoボードに送信できます。まるで宿題を提出するようなものです! .. image:: img/arduino_ide_icon.png :width: 200 :align: center これらの基本的な考え方を理解したので、Arduinoのエキスパートへの道が開けました。 次に、Arduinoプログラミングとエンジニアリングの原理に慣れるための実践的な活動に取り組みます。エキサイティングな学びの旅の準備をしましょう! SunFounder R3 Boardを知る ------------------------------------------------------------------ キットの中には、青いボードがあります。一見すると、小さな金属の塔と通路で満たされた小さな街のように見えます。しかし、それに怯える必要はありません!これはSunFounder R3開発ボードで、多種多様な電子機器やプロジェクトをプログラムして制御するために使用できるArduinoボードの一種です。 その主要な特徴を簡単な言葉で理解しましょう: .. image:: img/sf_r3.jpg :width: 800 * **14個のデジタルピン**: これらのピンは小さなメッセンジャーのようなものです。プログラムによって、マーズローバーの他の部品に単純な「はい」または「いいえ」のメッセージを送信(出力)または受信(入力)するように設定できます。これらのメッセージは実際には「オン」または「オフ」の信号で、ボードがライトやモーターなどの制御に使用します。 * これらの特別なピンのうち6つは、PWM(パルス幅変調)と呼ばれる一種の秘密のコードでメッセージを送信することもできます。このコードは、ライトの明るさ、モーターの回転速度、または可動部品の位置を制御するために使用できます。 * **6個のアナログピン**: これらのピンは、ボードの6つの特別な感覚のようなものです。様々なタイプのセンサー(温度センサーなど)からの信号を読み取り、その信号をボードが理解してプログラミングで使用できる言語に変換します。 * **USB接続**: これはボードのへその緒のようなものです。ボードをコンピューターに接続するために使用します。この接続により、コンピューターは作成したプログラムをボードに送信して、ボードに何をすべきかを「教える」ことができます。 * **電源ジャック**: これはボードの食料供給源です。バッテリーやAC-DCアダプターなどの電源をこのジャックに接続して、ボードが動作するために必要な電気を「供給」します。 * **ICSPヘッダー**: これはボードをプログラミングするための特別な入り口のようなものです。外部プログラマー(ボードに「教える」ための特別な装置)がある場合に使用できます。 * **リセットボタン**: これを押すと、ボードが今やっていたことを忘れて、最初からプログラムをやり直すように指示することになります。 これらの基本を理解すれば、SunFounder R3ボードを使ったプログラミングの冒険を始める準備は完了です! .. _install_arduino_ide: Arduino IDEのインストール ----------------------------------------------- ArduinoとArduinoボードについて理解したところで、その知識を実際に活用する時が来ました。ArduinoボードをプログラムするためのソフトウェアであるArduino IDEをインストールします。 最新バージョンのArduino IDEはバージョン2.0です。機能が豊富で、非常にユーザーフレンドリーです。ただし、いくつかのシステム要件があることに注意してください: * Windows - Win 10以降、64ビット * Linux - 64ビット * Mac OS X - バージョン10.14:「Mojave」以降、64ビット 開始するには、次の手順に従ってください: #. |link_download_arduino| にアクセスし、お使いのOSバージョンに対応するIDEをダウンロードします。 .. image:: img/sp_001.png **Windowsユーザーの場合:** #. ファイル(``arduino-ide_xxxx.exe`` のような名前です)をダウンロードしたら、ダブルクリックしてインストールプロセスを開始します。 #. **ライセンス契約** が表示されます。内容を確認し、条件に同意する場合は「I Agree」をクリックします。 .. image:: img/sp_002.png #. 次に、インストールオプションの選択を求められます。デフォルトのままにして「Next」をクリックします。 .. image:: img/sp_003.png #. ソフトウェアをインストールする場所を選択します。通常は、システムが使用しているドライブとは別のドライブにインストールするのが最適です。 .. image:: img/sp_004.png #. 「Install」をクリックしてインストールを開始します。完了したら「Finish」をクリックします。 .. image:: img/sp_005.png **macOSユーザーの場合:** ダウンロードしたファイル(``arduino_ide_xxxx.dmg`` のような名前です)をダブルクリックします。画面の指示に従って、 **Arduino IDE** アプリを **アプリケーション** フォルダーにドラッグします。数秒後、Arduino IDEが正常にインストールされます。 .. image:: img/macos_install_ide.png :width: 800 **Linuxユーザーの場合:** LinuxシステムへのArduino IDE 2.0のインストールに関する詳細なチュートリアルはこちらにあります: |link_arduino_linux| Arduinoの遊び場(IDE)を発見する ---------------------------------------------------------------- Arduino IDEが、私たちが探索して遊ぶのを待っているツールやガジェットで満たされた魔法の遊び場だと想像してみてください。次に、この遊び場の隅々までを理解するように案内します。 .. image:: img/ide-2-overview.png :width: 800 遊び場には以下のものがあります: * **Verify / Upload(検証/書き込み)** - これを魔法のエレベーターとして想像してください。書いたコードをArduinoボードに運び上げます。 * **Select Board & Port(ボードとポートの選択)** - これは宝の地図です。コンピューターに接続したArduinoボードを自動的に表示し、そのポート番号を教えてくれます。 * **Sketchbook(スケッチブック)** - これはあなたの個人図書館です。すべてのスケッチ(プログラム)がコンピューターに保存されます。さらに、Arduino Cloudに接続して、オンラインからスケッチを取得することもできます。 * **Boards Manager(ボードマネージャー)** - これはツールキットだと考えてください。Arduino用の様々なパッケージを見つけてインストールできます。 * **Library Manager(ライブラリマネージャー)** - これは無限の宝箱です。Arduinoとそのコミュニティによって作られた何千ものライブラリがここであなたを待っています。コードにツールや材料が必要ですか?飛び込んで見つけてください! * **Debugger(デバッガー)** - コードをリアルタイムでテストおよびデバッグし、問題が発生したときに見つけて修正できる超能力を持っていると想像してください。それがこれです! * **Search(検索)** - これは虫眼鏡だと考えてください。コード内のキーワードを検索するのに役立ちます。 * **Open Serial Monitor(シリアルモニターを開く)** - これは通信機のようなものです。新しいタブを開き、コンピューターとArduinoボードがメッセージを送受信できるようにします。 遊び場をひと通り見たところで、いよいよ飛び込んで創作を始めましょう! .. _upload_sketch: 最初のスケッチをアップロードする ----------------------------------------------- さあ、楽しむ時間です!LEDを点滅させてみましょう。これはArduinoの世界での「Hello, World!」のようなものです。 ほとんどのArduinoボードには13番ピンに内蔵LEDがあり、これが最初の実験に適しています。 .. image:: img/1_led.jpg :width: 400 :align: center 詳しく見ていきましょう: #. **プラグを接続する**: USBケーブルを使ってSunFounder R3 Boardをコンピューターに接続します。これにより、ボードに電力を供給し、プログラム(「スケッチ」とも呼ばれます)を送信します。単にコンピューターの周辺機器を接続しているだけのように感じるかもしれませんが、可能性の世界に接続しているのです! .. image:: img/connect_board_pc.gif #. **サンプルスケッチを見つける**: Arduino IDEで、 **File** -> **Examples** -> **Basic** -> **Blink** に移動します。表示されるのは、すぐに使用できるプログラムで、これを修正していきます。まるで飾り付けを待つ既製のケーキのようなものです! .. image:: img/open_blink.png #. **スケッチを理解する**: 新しいウィンドウのコードを見てみましょう。これはArduinoに、内蔵LED(13番ピン)を1秒間点灯させ、その後1秒間消灯させ、それを繰り返すように指示します。光を使ったモールス信号のようなものです! .. image:: img/led_blink.png #. **スケッチをアップロードする**: 正しいボードとポートを選択したら、アップロードボタンをクリックするだけです。手紙を送るのと同じくらい簡単で、Arduinoボードに指示を届けます!ほとんどの場合、システムが自動的にボードとポートを検出してくれます。 .. image:: img/upload_blink.gif #. **動作を確認する**: すべてがうまくいけば、ArduinoボードのLEDが点滅し始めるのが見えるはずです。まるでArduinoがあなたにウインクしているようです! .. image:: img/blink_led.gif よくできました!初めてのArduinoプログラムを実行し、正真正銘のプログラマーになりました!次は何でしょう?私たちはArduinoができることの表面をかじったにすぎません。次のチャレンジの準備はできていますか? Arduinoプログラミングの楽しい豆知識 -------------------------------------------------------- Arduinoプログラミングに関するクールな秘密をいくつか紹介しましょう! * コードの魔法: ``setup()`` と ``loop()`` Arduinoスケッチ(コードの一片)は、2幕構成の劇のようなものです: * ``setup()``: これが第1幕、オープニングシーンです。Arduinoボードが初めて起動するときに、一度だけ実行されます。ピンモードやライブラリなどを準備するために使用され、舞台を設定します。 * ``loop()``: 第1幕の後、最終幕(電源を切るかリセットボタンを押したときにのみ発生します)までループで繰り返される第2幕に進みます。コードのこの部分は、劇の主要部分であり、実際のアクションが行われる場所です。 しかし、``setup()`` や ``loop()`` に魔法(コード)がなくても、それらを保持する必要があることを覚えておいてください。それらは舞台のようなものです。空の舞台でも、それでも舞台なのです。 .. code-block:: arduino void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } // the loop function runs over and over again forever void loop() { } * コーディングの句読点 物語と同じように、Arduinoはコードを理解するために特別な句読点を使用します: * ``セミコロン (;)``: これらは物語の句点のようなものです。Arduinoに「このアクションは終わったよ。次は何?」と伝えます。 * ``中括弧 {}``: これらは章の始まりと終わりのようなものです。コードの一部をまとめて、セクションの開始と終了を示します。 もしこれらの句読点のいくつかを忘れてしまっても、心配しないでください!Arduinoは親切な先生のように、あなたの作品をチェックし、間違いがどこにあるかを指摘し、修正方法を示してくれます。これもすべて学習の冒険の一部です! .. image:: img/blink_error.gif * 関数について これらの関数を魔法の呪文として想像してください。各呪文はArduinoの冒険において特定の効果を持っています: * ``pinMode()``: この呪文は、ピンがINPUTかOUTPUTかを決定します。これは、物語の登場人物が話す(OUTPUT)か聞く(INPUT)かを決めるようなものです。 * ``digitalWrite()``: この呪文は、ピンをHIGH(オン)またはLOW(オフ)に設定できます。まるで魔法のライトをオン/オフするようなものです。 * ``delay()``: この呪文は、Arduinoを一定時間停止させます。物語の途中で短い昼寝をするようなものです。 呪文の本のように、これらの呪文やさらに多くの呪文は |link_arduino_web| で見つけることができます。知っている呪文が多ければ多いほど、Arduinoの冒険はよりエキサイティングになります! * コメント: 私たちの秘密のメッセージ コーディングには「コメント」と呼ばれる秘密の言語もあります。これらは ``//`` や ``/* */`` を使ってコード内に書くことができるメッセージです。魔法のような点は、Arduinoがそれらを完全に無視することです!これは、コードの難しい部分が何をしているかを説明するために、自分自身や他の人のためにメモを残すのに最適な場所です。 * コードの可読性: コードを親しみやすくする コードは好きなように書くことができますが(例えば、セミコロンを別の行に置いてもエラーにはなりません)、コードの可読性を考慮することが重要です。 .. image:: img/blink_noerror.gif 良い物語を書くのと同じように、コードの書き方によって、それが楽しく読みやすいものにも、退屈で読みにくいものにもなります。コードをより親しみやすくするためのいくつかの方法を紹介します: * 適切なインデントを使用して、文を整頓された段落に整理します。読者が、あるセクションがどこで終わり、別のセクションがどこから始まるかを理解するのに役立ちます。 * 意味のある変数名を使用します。物語の登場人物にぴったりの名前を付けるようなものです。 * 関数は小さくシンプルに保ちます。本の短くて簡潔な章のように。 * 難しい部分にはコメントを残します。難しい単語を説明するための脚注を残すようなものです。 私たちは機械のためだけでなく、人間のためにもコードを書いていることを忘れないでください。コードが明確で理解しやすい物語を伝えるようにしましょう! **振り返りと改善** 探検の慌ただしさの中で見逃してしまいがちな洞察を得るために、私たちの旅を振り返る時間を取りましょう。自分自身に問いかけてみてください: * このArduinoの冒険で最も面白かった部分は何ですか? * 途中で何か困難はありましたか?どのように克服しましたか? * Arduinoとは何か、Arduino IDEは何をするのか、Arduinoコードを実行する方法について、友達に説明できますか? * 初めてのArduinoプログラミング体験をどのように表現しますか? * Arduinoについてもっと学びたいことは何ですか? これらの質問について考えることで、理解を深め、将来の探求に備えることができます。振り返りに「間違った」答えはありません。結局のところ、それはあなた自身の個人的な旅なのです!