1.1 とりあえず使ってみる。(LED編)

mbedをとりあえず使ってみる。

以下のアドレスに最初の詳しい説明がある。
<Text1> http://mbed.org/users/nxpfan/notebook/lets_get_started_jp/
日本語化の説明も以下のページにあるが自分のIE7ではできなかった。
<Text2> http://mbed.org/users/weed/notebook/how_to_use_mbed_site_in_Japanese/
英語のままでも、通常使う分にはさほど難しくないと思います。

通常1つのmbedでは1つしかアカウント登録ができない様になっているらしいので、教育用で1台を複数人のGroupで使用するにはEducationのページをみて申請の必要がある。

環境

mbed LPC1768
☆Board Oreange

内蔵のLEDを使って勉強

1つのLEDの点滅はText1に載っていました。
LEDはLED1からLED4があるので、これを順次点灯するプログラムを作成します。

Basic編

シフトレジスタを使って行うシンプルな例

#include "mbed.h"
//LED1からLED4をled1からled4に割り当てる。
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

int main() {
    int k=1; //初期化
    while(1) {
        if(k>0x10)k=1;  //kが0b00010000になったら0b00000001にする
        led1 = k & 0x01;
        led2 = k & 0x02;
        led3 = k & 0x04;
        led4 = k & 0x08;
        k=k<<1; //kの中を左に1つ移動
        wait(0.1); //0.1秒待つ
    }
}

配列を使用した方法

if文でkとlが同じ場合が点灯し、それ以外は消灯にしています。

#include "mbed.h"
//led[0]をLED1,led[1]をLED2という風に定義
DigitalOut led[]={LED1,LED2,LED3,LED4};

int main() {
    int k,l;
    while(1) {
        for(k=0;k<4;k++){ //kを0から3まで変化させる
            for(l=0;l<4;l++){ //lを0から3まで変化させる
                if(k==l)led[l]=1;  //kとlが同じならLEDを点灯(1を代入)
                else led[l]=0;     //異なるなら消灯(0を代入)
            }
            wait(0.1);  //0.1秒待ち
        }
    }
}

BusOutを使用した方法

BusOutをLEDを束ねて使用できます。より単純になる。(これはHandbookのBusOutにある例とほぼ一緒)

#include "mbed.h"
//Busの定義
BusOut leds(LED1, LED2, LED3, LED4);

int main() {
    while(1) {
        for(int i=0; i<4; i++) { //iを0から3まで変化させる
            leds = 1 << i;       //0b0001をiビット分左にシフトする。それに対応したLEDが点灯する。
            wait(0.1);  //0.1秒待ち
        }
    }
}

ライブラリの作成方法も覚えましょう

ライブラリは新しいプログラムを中にできます。ライブラリをPublishすることで、あとで同じものを使うときに簡単に扱えたりします。

プログラムの作成

新しいプログラムを作成します。Newボタンを押します。

/media/uploads/yueee_yt/mbed_new.jpg

ファイル名を適当につけます。

/media/uploads/yueee_yt/_scaled_filename_input.jpg

ファイル名の上でマウスを右クリックしてNew Library...を選択

/media/uploads/yueee_yt/new_lib_select.jpg

ライブラリの名前を登録します(この名前は重要?)

/media/uploads/yueee_yt/lib_name.jpg

ソースとヘッダーを作成

ライブラリのフォルダの上で右クリックしてNew File ...を選択

/media/uploads/yueee_yt/lib_newfilename.jpg

そのあとソース(toggle.cpp)を作成する。

toggle.cpp

#include "mbed.h"
void toggle(DigitalOut x)
{
    x=!x;
}

同様にヘッダーを作成する。

  1. ifndefを使用するのは二重定義を無くすためで、includeと関数定義だけでも今の時点では問題ありません。

toggle.h

#ifndef yueee_led_toggle_h
#define yueee_led_toggle_h

#include "mbed.h"
void toggle(DigitalOut x);

#endif

これで使用できます。

main.cppをライブラリをする様に変更してみましょう。

main.cpp

#include "mbed.h"
#include "toggle.h"
DigitalOut myled(LED1);

int main() {
    myled=1;
    while(1) {
        toggle(myled);
        wait(0.2);
    }
}

コンパイル&ダウンロードして正しく機能するか確認してみましょう。

次回から使用できるように

ライブラリのフォルダの上で右クリックしてPublish Libraryをクリック

/media/uploads/yueee_yt/lib_publish.jpg

説明等を書きます。チェックボックスのAdd to my public mbed profieにチェックが入っていると全世界の人のTopページに載ります。

/media/uploads/yueee_yt/lib_publish2.jpg

こんな感じで!

/media/uploads/yueee_yt/tohomepage.jpg

新しいプログラムで使用してみましょう
新しいプログラムを作成するのでNewボタンを押します。

/media/uploads/yueee_yt/_scaled_mbed_new.jpg

適当なプログラム名で登録します。(ここではLED_TEST2とします。)

My HomeのページでAll Libraryをクリック

/media/uploads/yueee_yt/all_library.jpg

登録したライブラリを選択

/media/uploads/yueee_yt/select_lib.jpg

Import this library into a Programをクリックする。(2か所あるがどちらでも可)

/media/uploads/yueee_yt/import_lib.jpg

mbed Compilerのページに移りImportの画面になるのでTarget Pathを変更する。(ここではLED_TEST2)
そのあとでImport!ボタンを押す

/media/uploads/yueee_yt/lib_target_path.jpg

あとはソースの変更でOK!!

ちなみにProgramをPublishすると下記のような感じで見れます。忘記録に良いかも。使ったライブラリとかも表示されます。

/media/uploads/yueee_yt/pub_program.jpg

PWMによるBlink

LEDどうもPWMに接続されているらしいので、確認する。

HandbookのPWMにSampleが用意されているので、コピー&ペーストで動かしてみよう!
!とても簡単!

少し修正し、消える方も追加する

PWM_LED2.cpp

#include "mbed.h"

PwmOut led(LED1);

int main() {
    while(1) {
        for(float p = 0.0f; p < 1.0f; p += 0.01f) {
            led = p;
            wait(0.01);
        }
        for(float p = 1.0f; p > 0.0f; p -= 0.01f) {
            led = p;
            wait(0.01);
        }
    }
}


Please log in to post comments.