LEDをデジタルピン出力で明滅させてみる前章ではArduinoの電源端子から電気を貰い、ブレッドボード上のLEDを点ける単純な実験回路を組んでみました。同じ事は乾電池でもできるので、Arduinoらしさはまだそこにありません。本章ではいよいよArduinoにプログラムを流し込んで、LEDを点滅させる実験をしてみます。SDKをダウンロードして環境構築Arduinoにプログラムを流すには、プログラムを書くためのPCが必要です。PC上でプログラムを書き、それをArduinoが認識できる形式に変換(コンパイル)して、ArduinoにUSB経由で流します。これを行うにはPCに専用の環境(IDE)を作る必要があります。IDE」からお使いのOSに対応したIDEをダウンロードしてインストールして下さい。Driverにチェックがあるのを確認して下さい。このドライバが無いとプログラムを流し込めません。Driverのインストール確認のウィンドウが出た場合は入れて下さい。インストールが終わったら、ArduinoをPCに繋ぎます。Driverが認識されるはずです。これでセットアップは完了です。Files\Arduinoに展開されています。その中のarduino.exeを起動です。すると次のようなウィンドウが開きます:シンプル〜さて、では早速プログラムを組んでみます。今回の目的はLED一つを点滅させる事です。間隔は...0.5秒置きくらいかな。...どうやって組むのかな(^-^;;;。プログラムの組み方そのものを知らないと始まりませんね。お!本家HPにLearningがあるじゃないの。started(最初からやってみよう)もあるじゃないの。開発環境はWindowsなのでWindowsのリンクをクリック。すると、まぁ手取り足とり手順を教えてくれています(^-^)。example」から始めてみましょう。sketch(LED点滅サンプルを開いてみよう)」、おぉ、そのまんまなサンプルがSDKのフォルダのexamples/1.Basics/Blinkにあるとあります。あ、しかももっと簡単に開けるようです。IDEのウィンドウのメニューから[ファイル]→[スケッチの例]→[01Basics]→[Blink]で該当サンプルが新しいウィンドウで開きます。Blinkサンプルは大変に短い物でしたので、そのまま掲載(コメント日本語化)します:Blinkサンプル/*BlinkLEDを1秒間点灯し、次の1秒間は消灯するを繰り返します。このサンプルコードはパブリックドメインです。1秒待つdelay(1000);}解説がいらないくらい簡単です(^-^;。コードは限りなくC言語ライクなので楽々ですね。いくつかポイントがあるようです。変数はグローバル領域に設定できる。上の例では「led」というグローバル変数が定義されています。setup関数はArduino基板が初期化される時(リセットボタンが押された時)に1度だけ呼ばれる関数です。関数内ではpinMode関数で「どのピンを入出力に使うか」を規定しています。本家HPには関数リファレンスが用意されいます。IDE内の関数部分で右クリックをするとメニューが開き「リファレンスで検索」を選択すると直接リファレンスを参照する事もできるようです。);pinはデジタルピンの番号を指定します。ピンを出力端子として設定するプルアップというのは入力端子の意味を逆にするという事です。通常入力端子に電圧をかけるとONになりますが、INPUT_PULLUPを指定すると電圧をかけていない状態がONになります。入力がある時にだけスイッチをOFFにしておきたい場合に指定します。loop関数は初期化後に永遠にグルグルと回り続ける(呼ばれ続ける)関数のようです。ゲームループ関数と同じですね。サンプルではここでLEDの点滅をさせるスイッチングをしています。);pinはデジタルピンの番号を指定します。スイッチをOFFにするサンプルでは13番ピンにLEDが刺さっている前提なので、pinに13番(led)、valueにHIGHを指定して点灯指示しています。これは引数のミリ秒だけ待つ関数です。);msには待ちたいミリ秒数を整数で指定します。いう事で、サンプルでピンに対して命令を与える方法を学べました。このサンプルをそのままArduinoに流し込んでみます。Arduinoにプログラムを流し込む出来たプログラムをArduinoに流し込む最初の手順は「基板の選択」です。どの基板を対象としているかをIDEに教えてあげる必要があります。これは接続している基板の型番によって変わる所ですね。次に[ツール]→[シリアルポート]でArduinoの基盤が刺さっているCOMポートを確認します。私の環境だとCOM3になっていましたが、これも環境によって変わりそうです。ハードウェアのセッティングをチェックしたら、次はコードのチェックです。これはメニューの下にあるチェックマークボタン(検証)でコンパイルができます。押すとコンパイルが始まって、次のようなメッセージが出力されました:ほう、このコードで1KBある(^-^;;;。コンパイルして問題無さそうなら、右矢印のボタン(マイコンボードに書き込む)を押すと、USB経由でプログラムがArduino基板に転送されます。...お、押してみるべ!ほ!はい、COM3です。了解をクリックしましょう。お、すると、コンパイルが始まり、次にArduino基板のTX、RXという小さなLEDがチカチカっと点滅しました:どうやら、これで転送が完了したようです。不思議な感じ(^-^;。動いているかテストだ!さて、これでプログラムがちゃんと動いているなら、RESETボタンを押すと13番ピンに「ON→OFF→ON」という電圧の出力が起きているはずです。前章で作成したLED点滅の回路がそのまま流用できます。前章ではArduinoのPowerをそのまま使いましたが、今回はそれを13番ピンに差し込みます。すると...:お〜〜点滅してる〜、楽しい(^-^)。いう事で、無事にプログラムが動いているのを確認できました。点滅間隔を変えてみる一応今回の目標は達成できたのですが、ただサンプルを動かしただけでは寂しいので、少しだけ改造してみます。点滅間隔を三三七拍子にしてみます。1拍を0.4秒くらいとしましょう。点灯は0.2秒、待ちも0.2秒かな。これは1拍を表す関数を作れば潰しがききます。);rest();}これをArduinoに流し込んでみました:ははは(^-^)。先のサンプルと違いちゃんと8番ピンが出力になっているのがわかります。簡単なプログラムでデジタルピンに対してON/OFF命令を送る事ができました。小さな一歩ですが、少なくともこれで「制御」が出来ている訳ですからウキウキしない訳がありません(^-^)。次に何をするか考えてみたのですが、Arduinoにはアナログピンもありました。これはどうやって使うのか?次章で検討してみる事にします。