Adventarの8日目の記事です。コピペでチョッパヤ開発デバイスとして有名なmbedを使って、コピペするための専用ハードウェアを(ほとんど)コピペだけで作ってみましょう。mbedオンラインコンパイラ上でのコピペとはmbedの開発で使用するオンラインコンパイラでのコピペとは、主にライブラリを1クリックか2クリックで使用するプロジェクト内にインポートすることを指します。そのサンプルコードをフォーラムなどから入手し、自分のソースコードへコピペします。接続しているピンの定義やライブラリの間を繋ぐちょっとしたコードを足すだけであらゆるものを作れる環境が揃っています。なんとなく仕様USBキーボードとして認識される。スイッチを押すと全選択(ctrl+A)、コピー(ctrl+C)、ペースト(ctrl+V)のコマンドを送信する。スイッチを押した時にmbed本体のLEDが光る。必要なものmbed本体USBデバイスに対応してそうなものを選びます。青mbedや黄mbedはもちろん、STやフリースケールのものも対応しています。platformsのところをよく読んで選びましょう。今回は他のmbedと異なり、デバイス側のUSBコネクタが基板上にあるFRDM-KL25Zを選びました。LPC11U35やLPC1549のものもデバイス側のUSBコネクタが載っていて便利です。個人的にはLPC11Uがシンプルで使いやすいと思います。タクトスイッチだとブレッドボードに刺さって便利。配線スイッチを配線してmbedに接続します。ピンはDigitalInできるところならどこでも構いません。コピペしてくるライブラリmbedhttp://developer.mbed.org/users/mbed_official/code/mbed/言わずと知れた一番大事なライブラリ。これがないと始まりません。新しく作ったプロジェクトに含まれていなければこれをインポートします。PinDetecthttp://developer.mbed.org/users/AjK/code/PinDetect/DigitalInのバウンスやノイズを解除し、立ち上がり・立ち下がり・長押しなど任意の状態に変化したときに割り込みをかけてくれるライブラリ。スイッチを使うときには何も考えずにこれを使うと吉。割り込みなので変数の扱いやブロッキングを伴うコードには注意。USBDevicehttp://developer.mbed.org/users/mbed_official/code/USBDevice/今回の主役、数行のコードでマウス、キーボード、MIDI、シリアルなどUSBデバイスを作ります。ライブラリのインポートmbedオンラインコンパイラでのライブラリのインポートはとても簡単です。オンラインコンパイラで新規にプロジェクトを作成します。プロジェクトを作成している場合は必要ありません。インポートしたいプロジェクトのページへ行きます。Programにプロジェクト名を入力すると新しいプロジェクトを作ってそこにライブラリを追加します。その場合はmbedライブラリが追加されないので別途インポートが必要です。実際にソースコードを書く場合はライブラリを1つずつ確認しながらの作業になります。コピペ開発にはできるだけライブラリのAPIドキュメントが充実しているもの、サンプルコードが潤沢なものを選ぶ必要があります。ない場合はライブラリのソースコードを読み解かなければいけません。今回利用するライブラリには詳細なドキュメントとサンプルコードがついています。サンプルコードをそれぞれ個別に自分の環境でコンパイルし、mbed上で動くことを確認します。・準備ハードウェア上で接続したピンを以下のように定数にします。今後、ライブラリを試す上でこの定数を使用するとハードウェアとソフトウェアでの不整合を防げます。D4defineすると怒られるかもしれないけど便利なのでしちゃいます。・PinDetectPinDetectのサンプルコードは変則的にライブラリ内にあります。http://developer.mbed.org/users/AjK/code/PinDetect/file/cb3afc45028b/example.h考えるのが面倒な場合はよく読まずにmain.cppに全てコピーしてピンの設定を変更してからコンパイルします。スイッチのピンを指定する。これ以下はテスト用のLEDです。使用しているボードによって書き換えること。);スイッチを押してピカピカとLEDが光れば動作しています。KL25Zの場合、コンパイル時にエラーが出てしまいます。このエラーはKL25ZのpinModeの指定にPullDownがないことに起因していますので、エラーメッセージをダブルクリックして、該当の場所を開いて修正します。);}この部分を以下のように修正し、再度コンパイルします。);}エラーを修正した場合は現在のプロジェクト内のライブラリのみが修正されます。動作の確認が出来た場合は元のライブラリのリポジトリへプルリクエストを送ると良いでしょう。(当然、他のプラットフォームのmbedでも修正後のライブラリで動作することを確認しなければなりません。)・USBDeviceUSBDeviceの中のUSBKeyboardのサンプルコードをプログラムとしてインポートして試します。programからオンラインコンパイラを起動してコンパイル、転送して下さい。デバイス側のUSBケーブルを刺したままにしていると思いもよらぬところでキーボード入力されてしまうかもしれないので、メモ帳などを立ち上げてそこにフォーカスを移してからデバイス側のUSBケーブルを差し込む方が安全です。正常に動いていれば、PCの音量が下がったり勝手に文字入力されたりします。コードを書く全てのライブラリの動作確認が出来たら、全てのライブラリをインポートしてコードを書いていきます。ここまで来たらもう簡単です。あっちとこっちを組み合わせる部分だけを書きます。するとライブラリを同時に使用したことで何らかのエラーが出るかもしれません。そのときは諦めて他のライブラリを検索するか、ForumやQuestionで該当するものがないかどうか探してみましょう。実際に書いたコードはこちらで公開しています。公開の都合上、修正したPinDetectライブラリはフォルダに変換してあります。まとめコピペでチョッパヤプログラミングはmbed.org内での検索能力に秀でていなければいけません。お行儀の悪いライブラリには全くコメントやドキュメントが書かれておらず、ソースコードそのものを読み解く必要もでてくるでしょう。するとmbedライブラリやマイコン自体のデータシートまで調査する必要があるかもしれません。コピペの道は修羅の道です。大人しく最初から書いたほうが良いことも多いですが、そのお手本にするためのコード資産がmbed.orgには集まりつつあります。利用しない手はありません。この機会にmbedはじめてみましょう!次はkumar0001さんです。2014向けの記事です。書いてる途中にこういうものが公開されているのを知りました。おもいっきり被りました。僕も以前こういうUSBデバイス作りました。Reserved.ログイン。