マイコンボードを学習するとき、まず始めにLEDを光らせてみる、という演習をよく行います。「Lチカ」とは「LEDをチカチカさせる」の意味です。今回は Arduino 本体の基板上に実装されているLEDを光らせてみます。
Arduino を接続
Arduinoを付属のUSBケーブルでパソコンに接続してください。Arduinoの基板上の “ON” と表記された緑のLEDが点灯しているはずです。それとは別に “L” と表記されたLED(赤丸のところ)があります。今回はこれを点滅させます。もしかすると、この時点で既にチカチカしているかもしれませんが、それは Arduino が出荷された時点でデモ用に入っているものです。そのデモ・プログラムは無かったものとして先に進んでください。
Arduino IDE でプログラミング
Arduino IDE を起動するとこのような画面になっています。
中央の白い部分にプログラムを書いていきます。言語はC言語にC++言語を一部取り入れたようなものになっています。C言語について初めてならば別途学習してください。
setup() は Arduino が起動されたりリセットされたときに1度だけ実行される関数です。変数や接続デバイスの初期化処理をここに書きます。loop() は Arduino が起動している間ずっと繰り返し呼ばれ続ける関数です。
Arduino IDE の中に「Lチカ」のサンプルプログラムがありますのでそれを読み込みます。
[ファイル]>[スケッチ例]>[01.Basics]>[Blink]プログラムを説明しておきます。
setup() ではLEDにアクセスするための情報を設定しています。”LED_BUILTIN” は Arduino 基板上のLEDを示すピン番号です。今回はそのピンをプログラムから制御しますので “OUTPUT” と定義しています。
1 2 3 4 |
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } |
loop() では、degitalWrite() 関数でLEDに信号を送っています。”HIGH” を送ればLEDは点灯し、”LOW” を送ればLEDは消灯します。delay(1000) は「1000ミリ秒待つ」という意味です。この処理が永久に続きます。ソースコードに繰り返しを意味する for や while がありませんが、loop() 関数そのものが繰り返し呼ばれ続けると考えてください。全体では、LEDオン→1秒後にLEDオフ→1秒後にLEDオン、という動作が繰り返されます。
1 2 3 4 5 6 |
void loop() { 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 } |
プログラムを書き込む準備
- ボード
この設定は保存されますが、Arduino IDE を別のマイコンボードのプログラミングに使ったりすると、設定が変更されますので再設定してください。
- ポート番号
Windows の場合はスタートメニューを右クリックしてデバイスマネージャを起動してください。[ポート(COMとLPT)] の下に Arduino が接続されているポートの番号が表示されています。この番号(下の例では5)を覚えてください。もし Arduino が認識されていなかったら必要なドライバがインストールされていませんので、インストール手順 をやり直してください。ポート番号が確認できたらデバイスマネージャは終了してください。
Macの場合は [ツール]>[シリアルポート] の中から 「/dev/cu.usbmodem〜」と表示された項目を選んでください。
プログラムを Arduino に書き込む
このプログラムを Arduino に書き込みます。Arduino IDE の右矢印 “書き込み” のボタンを押してください。
正常に書き込めたら次のような表示になります。
エラーメッセージのようなものが表示されていたら書き込みに失敗しています。もう一度ボードの種類やポート番号を確認してください。
動作確認
さて、改めて Arduino の基板上のLEDが「チカチカ」していることを確認してください。デモ用のプログラムが初めから入っていたので変化がわからない、という場合はプログラムを少し変更して書き込んでみてください。delay(1000) の数字を変えるとLEDが点滅するタイミングが変わります。「チカチカ」だけでなく、例えば「チ~カチカチカ」となるように工夫してみてください。
コメント