[動画]
今回の流れの動画です。
KTR-1表面についているLEDを制御します。
Arduinoはコンピュータのため、スケッチと呼ばれるプログラムを書き込まないと動いてくれません。
スケッチを書いたり、Arduinoへそれを書き込むためのArduino IDE(統合開発環境)が無料で配布されています。
こちらをPCにダウンロードしていきましょう
検索エンジンで「arduino IDE」と検索します。
Arduino公式サイトが出てくるのでクリックします。
自分のPCに合ったソフトを選びます。今回はWIN10とします。
寄付をお願いされます。懐に余裕のある方はドウゾ。
寄付をしない場合「JUST DOWNLOAD」を選択してください。
MSストアに飛ばされます。入手をクリックし、画面の指示に従ってArduinoIDEを入手してください。
さっそくスケッチを書いていきましょう。
ArduinoIDEを起動するといきなり文字を入力する画面が出てきます。
急に英文字が出てきてビビってしまった方もいると思いますが、意味が分かれば怖くありません。
翻訳すると以下のようになります。
void setup(){
//セットアップコードをここに配置して、1回実行します。
}
void loop(){
//メインコードをここに配置して、繰り返し実行します。
}
ここで記述されたスケッチがArduinoに書き込まれた場合、上から1行ずつArduinoはそれを実行していくイメージです。
void setup()の後の{}で囲まれた範囲はArduino起動時(電源投入時)に1回のみ実行され、
その後はvoid loop()の後の{}内を電源が供給される限り実行し続けます。
スマートフォンを起動した際に1回だけロゴが出て(void setup())
その後我々が操作できるようになる(void loop())
......ようなイメージでしょうか。
今回はLEDをつけたり消したりしたいため、日本語で書くと以下のようなスケッチを書くことになります。
void setup(){
LEDが接続されたPINを出力に設定します。
}
void loop(){
LEDが接続されたPINから5Vを出力します。
1秒待機します。
LEDが接続されたPINから0Vを出力します。
1秒待機します。
}
こちらをArduino言語に直すと下記のようになります。
写経なりコピぺなりをしてArduinoIDEに記述してください。
これより内容の解説に入っていきます。
最初に「LEDが接続されたPINを出力に設定します。」と書きましたが いや、どこだか知らんよ??と思っているでしょう。
回路図を見に行きましょう。
本ページ右上のリンクや下記のリンクからKTR-1の設計資料を公開しているGitHubにアクセスできます。
こちらの回路図右下を見ると......D14とD15ピンからLEDへ繋がっていることがわかります。
[図]回路図の右下 D14PINとLED1、D15PINとLED2が接続されていることがわかる。
LEDのあと1Kと書いてある抵抗という部品に繋がりGNDと書いてあるところに繋がっていますが、ここはLEDをいい感じに光らせる回路なのでさほど気にしなくても良いです。
この回路であれば、D14から電力を供給すればLED1を光らせることができます。(LED2も同等です)
したがってD14がLED出力ピンです。
Arduinoのピンは入出力が可能なため、入出力どちらで使うかを宣言してからでないと使用できません。
基本的にそんなことは1回きり起動時に宣言すれば良いのでvoid setup()の中に記述します。
記述法は公式リファレンスや翻訳された日本語リファレンス等から確認できます。
ピンの設定は以下の記述で可能です。
pinMode(ピン番号, INPUTかOUTPUTかINPUT_PULLUP );
今回はD14を出力で使うため
void setup(){
pinMode(14,OUTPUT); //LEDが接続されたPINを出力に設定します。
}
となります。
そして文末には; (セミコロン)を書きます。
改行ではなくセミコロンで文の終わりを示すので一行にまとめて書くこともできます。お好みで使い分けてください。
pinMode(14,OUTPUT); pinMode(15,OUTPUT);//例
プログラム中に日本語の記述がありますが、
//より後ろの文字はコメントでスケッチ内に記述することによりコードを読みやすくする目的があります。
機械は//の後は無視するので(その行のみ)書いても書かなくても実行結果には反映されません。
/*
複数行にまたがって書きたい場合はこのようにします。
*/
本ページの山場です。
void loop(){
LEDが接続されたPINから5Vを出力します。
1秒待機します。
LEDが接続されたPINから0Vを出力します。
1秒待機します。
}
こちらの部分を記述して行きます。
LEDの制御方法ですが、単純に電流を流すか否かでつけたり消したりします。
リビングの照明を壁のスイッチでオンオフするようなイメージです。
したがってD14から電流を流したり流さなかったりしてLEDを点滅させていきます。
先程上の方でも書きましたが、そのプログラムが以下です。
まず
digitalWrite(ピン番号, HIGHかLOW)
デジタルライト関数を使いD14より5Vを出力します。
その後すぐ0Vを出力するのではなく
delay(ミリ秒);
ディレイ関数を使いプログラムを指定した時間だけ止めます。
※1秒 は 1000ミリ秒
なぜ一旦止めるのかというとマイコンはかなり早い速度で動いているため、ただハイローを繰り返すだけだと肉眼ではよく見えないためです。
実際にやってみるのも乙だと思います。
その後デジタルライト関数を使いD14より0Vを出力し、
同じように1秒待機します。最後一行は抜けがちなので注意してください。
このコードをこれからArduinoに書き込んで行きます。本項一番楽しいところです。
書き込む前にArduinoIDEよりKTR-1で使用しているProMicroへ書き込みができるように設定を行っていきます。
まず ファイル>環境設定>追加ボードマネージャのURL
を選択してテキストボックスに
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
と入力します。
次に ツール>ボード(カーソルかざし)>ボードマネージャ より検索欄に「sparkfun」と入力し「Spark Fun AVR Boards」をインストールします。
更に
ツール>ボード>SparkFun AVR Boards>SparkFun Pro Micro
プロセッサ>ATmega32U4(5V,16MHz)
を選択します。
次にKTR-1とパソコンのUSBボートを付属のMicroUSBケーブルで接続します。
このとき必ずバッテリパワースイッチをオフにしてください。
ProMicroの仕様によりこの様になっています。
次に左下のウィンドウズマークを右クリックしデバイスマネージャを選択しポートの項目のUSBシリアルデバイスのCOMポート番号を覚えておきます。
(COMポート番号はそれぞれの環境により異なります。)
ArduinoIDEに戻りツール>シリアルポートから先程のCOMポート番号を選択します。
そうしたら左上のチェックマークを押してコンパイルをしましょう。保存するか聞かれるのでお好みの名前に変えたり無視したりしてください。
コンパイルをすると記述した文字主体のスケッチをArduinoが実行できる形式に変換してくれます。
ありゃ?エラーが出てしまいました。
記述に文法的なミスが有るとエラーが出て注意してくれます。
今回は8行目の末尾に;を忘れてしまったようです。(結構多いミスです。筆者もよくやります......)
行数表示は環境設定より変更できるのでお好みでドウゾ。
矢印ボタンからKTR-1へスケッチを書き込むと......
LED1が1秒間隔で点滅していると思います。これで本項の目的達成です。おめでとうございます!
よく出来ました!
また、KTR-1は見た目通り電池を積んでいるのでUSBケーブルを抜いて、おしりのスイッチをONにすると
外部電源供給無しで動くことができます。
それと、うまく動かなかったり電源を切りたい場合はスイッチブチ消しで大丈夫です。
キルスイッチとしてご使用ください。
コードを変えて点滅周期をいじったりして遊んでみてください。
また、購入時に書き込まれていたスケッチはGithubにて公開しております。
戻したくなったらダウンロードしてください。
Githubからファイルをダウンロードする方法は弊社ブログ記事をご参照ください。
コードが正しいのに書き込みが出来ない!という場合
win10であれば自動的に入るはずのドライバが入らなかった可能性があります。
Spark Fun 公式のドキュメントを参考にドライバをインストールしてください。 こちらのほうが色々と詳しいです。
また、ProMicroのハードが原因で書き込めない状況が発生することもあるようです。
FAQを参考に復帰させてみてください。
三三七拍子でLEDを光らせてみよう