ch_arduino
差分
このページの2つのバージョン間の差分を表示します。
ch_arduino [2018/01/04 01:10] – 作成 kanemune | ch_arduino [2018/02/09 11:07] (現在) – klab | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | # Arduinoと通信しよう | ||
+ | |||
+ | **Arduino**というデバイスを使って、LEDやセンサなど外部デバイスとの入出力をしてみよう。Arduinoを使用するためには、ローカル版のドリトルが必要である。 | ||
+ | |||
+ | |||
+ | |||
+ | ## Arduinoの入手 | ||
+ | |||
+ | Arduinoは、イタリアで開発された汎用入出力ボードである。設計がオープンソースとして公開されており、さまざまな製品が存在する。((入手方法は、ArduinoのWebサイト(http:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## ドリトルと通信するための設定 | ||
+ | |||
+ | Arduinoは標準では、Processing言語で記述されたプログラムを転送して自律的に動作する。本書ではArduinoにドリトルと通信するためのプログラムを転送し、ドリトルと通信しながら対話的に動作させる。Arduinoに格納したプログラムは電源を切っても残るため、いちど書きこんでおけばよい。以下に手順を示す。 | ||
+ | |||
+ | |||
+ | - ArduinoのWebサイト(http:// | ||
+ | - インストールしたプログラム(**Arduino IDE**)を起動し、ドリトルのパッケージに付属する**arduino_dolittle.ino** というファイルを開く。すると、画面に「# | ||
+ | - 「Tools」メニューの「Board」から、使用するArduinoの種類を選ぶ。 | ||
+ | - Arduino IDE上部の「△」のボタン(Verify)を押す。すると、画面下部に「Done Compiling」と「Binary sketch site: ...」というメッセージが表示される。 | ||
+ | - USBケーブルでArduinoをパソコンに接続する((Macでは設定が必要な場合がある。「はじめに」(p.**mac_install** )を参照。「新しいネットワークインターフェースが検出されました」と表示された場合は、キャンセルでダイアログを閉じて構わない。))。すると、基板上の緑色のLEDが点灯する。 | ||
+ | - Arduino IDE上部の「→」のボタン(Upload)を押す。シリアルポートを選択するダイアログが開いた場合は、Arduinoが接続されたポートを選択する((ポートが不明な場合は、Windowsであれば「COM」に続く数字の大きい順に試し、Arduinoが反応するポートを探す。Macの場合は「/ | ||
+ | - 正常に転送された場合は、Arduino IDEの画面下部に「Done uploading」と表示される。このメッセージを確認したら、Arduino IDEを終了する。 | ||
+ | |||
+ | |||
+ | |||
+ | ## デジタル出力による動作の確認 | ||
+ | |||
+ | 動作を確認するには、ArduinoとUSBケーブルを接続した状態で、ドリトルに次のプログラムを入力して実行する。Arduino上の「L」と書かれたオレンジ色のLEDが1秒ごとに10回点滅すれば、ドリトルとの通信は正常に行われている。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||
+ | |||
+ | ドリトルからArduinoを制御するプログラムは、次の形で記述する((「(システム!シリアルポート選択)」の部分は、あらかじめわかっている場合は、「" | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | </ | ||
+ | |||
+ | 「...」の部分には、Arduinoを制御するプログラムを書く。今回は最初に、13番ポートに**デジタル出力**するオブジェクトを作り「led」という名前を付けている。基板上には13番ポートに接続された**発光ダイオード**(**LED**)が存在するため、外部にLEDを接続しなくても動作の確認が可能である。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | 続いて「led」に「書く」により出力を行う。デジタル出力では、「1」を書くことで出力をONにし、「0」を書くことで出力をOFFにする。このプログラムでは、0と1を1秒ごとに出力することで、LEDを点滅させている。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Arduinoに接続したLEDを光らせる場合は、「デジタル出力」のパラメータに接続したポート番号を指定する。ブレッドボードを利用した配線の例は**arduinoSample** を参照されたい。 | ||
+ | |||
+ | |||
+ | |||
+ | ## アナログ出力 | ||
+ | |||
+ | Arduinoの特定のポート((Arduino UNOでは基板上の番号の前に「--」が付いた3, | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## デジタル入力 | ||
+ | |||
+ | **デジタル入力**は、特定のポートの電圧の有無を0と1の値で返すことで、スイッチ等のONとOFFを検出できる。 | ||
+ | |||
+ | 次のプログラムでは、12番ポートに入力があるときに画面のタートルを前進させている。(スイッチが接続されている場合は、押されているかどうかでタートルの動きが変化する) | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## アナログ入力 | ||
+ | |||
+ | **アナログ入力**は、特定のポートの電圧を0から255の値で返すことで、各種センサの入力を検出できる。 | ||
+ | |||
+ | 次のプログラムでは、アナログの0番ポートに接続された**光センサ**(**CdS**)の入力値によって、画面のタートルを回転させている。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## Arduinoの配線例 | ||
+ | |||
+ | **arduino_analog_output** 節から**arduino_analog_input** 節の動作を確認するための回路図を示す。抵抗値はスイッチに接続したものが100KΩ、他は10KΩである。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 写真は**ブレッドボード**を利用して配線したものである。配線材、LED等の部品は、スイッチサイエンス社((http:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## 加速度センサの応用例 | ||
+ | |||
+ | 加速度センサを利用すると、傾きを検出できる。次の回路図のように、3軸加速度センサを接続することが可能である。((今回は、秋月電子通商で販売されているカイオニクス社の「3軸加速度センサモジュール KXM52--1050」で動作を確認した。)) | ||
+ | |||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | 3軸加速度センサを利用するプログラム例を示す。ここでは1方向の傾きだけを利用して、Wiiリモコンのように画面のタートルを操作することができる。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | 「 かめた!5 歩く。 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||