2012年6月24日日曜日

mbedの紹介

学校から更新できないことが判明して週一の更新がやっとらしいです。まるさです。

沖縄もやっと梅雨が明けました。入梅が早かったのですごい長かった気がします。
湿度が高いのは嫌いです()


現在mbedというマイコンで組み込み開発をしています。(mbed本家:http://mbed.org/)
主に大会に向けての開発、ということなのですけれどもものすっごく面白いので紹介したいと思います。
mbedはもともとC++による組み込み機器のプロトタイピングツールとして作られたものです。
そのためなのか、非常に強力なI/Oとライブラリを備えています。

面白いのが、開発環境がクラウド上に存在することです。ネットワークにつながったPCさえあればあらゆるところから開発ができます。
さらに、mbedへの書き込みが非常に簡単です。mini-BのUSBでPCと接続(mbedにはUSBポートがついている)するとPC側ではストレージとして認識され、そこにコンパイルしてできたバイナリファイルを置くだけで書き込み完了となります。



mbed(NXP LPC1768)では、以下のような入出力をサポートしています。
・26本のデジタルI/O
・4つの青色LED(デジタル出力)
・6本のアナログ入力
・1本のアナログ出力
・6本のPWM出力
・3対(6pin)のシリアル通信ポート
・イーサネットポート(4pin)
・USBポート(2pin)
・3組のSPIポート
・2対(4pin)のI2Cポート
・CANポート(4pin) (何の規格かよくわからない。Controller Area Networkか?)


何するにも非常に簡単です。センサから値を取得するのも、スイッチのON/OFFをチェックするのもまったく同じコストで実装できます。

アナログ・デジタル入力サンプル
#include "mbed.h"

DigitalIn di(p5); //pin5をデジタル入力に
AnalogIn ai(p15); //pin15をアナログ入力に

int main()
{
    if (di == 1){
        //デジタル入力がHiだったときの動作
    } else {
        //Lowだったときの動作
    }

    while (true){
        printf("%f\n", ai.read_u16); //USBでPCと接続してるとPCに出力される
        wait(1); //一秒待機
    }

}

と、こんな感じで使えます。デジタルであればHi:1,Low:0、アナログであれば0V-3.3Vが0-1の浮動小数点数で確認できます。


LCD(液晶ディスプレイ)だとかEthernetだとかも変数宣言(インスタンス生成?)のように設定して、簡単に使うことができます。

LCD表示サンプル
#include "mbed.h"
#include "TextLCD.h"

TextLCD lcd(p24, p25, p26, p27, p28, p29, p30);  //LCDをつなぐpinを設定

int main() {
    lcd.cls(); //LCD表示をクリア
    lcd.printf("Hello,marusa!!"); //驚くべきことにこれで表示できる
    wait(2); //2秒待機
}


LCDへの出力をしようと思ってコーディングしたときに、LCDの仕様書を学校に忘れてしまってオワタ\(^o^)/していたのですが
こんな便利なライブラリがあるということなので実装してみるとなんと3行で表示・・・
非常に驚きました。


大会に向けていろいろ試してみているので、これからも面白かった実験を時々書いていこうと思います。
mbedすごく面白いのでぜひぜひ遊んでみてください。
回路ができなくても「☆bord Orange」と組み合わせてスタンドアロンで動くシステムが作れたりします。
そのうち実際に回路に組み込んだmbedも紹介しようと思います。

0 件のコメント:

コメントを投稿