mbed LPC1768+mbedシールドのGrove部分を動かすメモ

些細な事ですが、mbed LPC1768+mbedシールドのGrove部分を動かすメモです。デジタルとアナログで一体どのピンを使うかがわからなくなったので、回路図を見ながら試してみました。

今回の構成

image

スイッチサイエンス製のmbedシールドmbed LPC1768でMilkcocoaで有線LANの接続を行っていたのですが、いよいよGrove使ってみたところでつまづいてしまいました。

image

J16、J10、J13、J7と刻印されているのですがピンの番号ではないらしく、どのピンが割り当てられているかさっぱり分からない…

回路図を見てみる

しかたないので回路図を見てみます。Mbed Shield – Seeed Wikiから回路図をダウンロードして、AUTODESK EAGLE8.0で開いてみたところ

image

対応するピン番号が分かってきました。

// p14 = j10
// p27 = j7
// p10 = j13

デジタルなピンはこのようになっているようです。

LED点滅させてみる

image

早速やってみます。J7に接続した場合です。

#include "mbed.h"

DigitalOut myled(p27);

// p14 = j10
// p27 = j7
// p10 = j13

int main()
{
    // check that myled object is initialized and connected to a pin
    if(myled.is_connected()) {
        printf("myled is initialized and connected!\n\r");
    }

    // Blink LED
    while(1) {
        myled = 1;          // set LED1 pin to high
        printf("\n\r myled = %d", (uint8_t)myled );
        wait(0.5);

        myled.write(0);     // set LED1 pin to low
        printf("\n\r myled = %d",myled.read() );
        wait(0.5);
    }
}

こちらを動かすと無事以下のようにログが出力されGrove LEDが点滅します。

image

アナログピンの場合

image

たとえば、このようにJ16のアナログピンに挿してアナログ値の明るさセンサーを受け取るときです。

J16のアナログピンの場合はピンを番号がわからなくてもうまくいきました。

AnalogIn – Handbook | mbed を参考に以下のように書きます。

#include "mbed.h"

Serial pc(USBTX, USBRX);

AnalogIn   ain(A0);
DigitalOut dout(LED1);

int main(void)
{
    while (1) {
        if(ain > 0.3f) {
            dout = 1;
        } else {
            dout = 0;
        }
        pc.printf("percentage: %3.3f%%\n\r", ain.read()*100.0f);
        pc.printf("normalized: 0x%04X \n\r", ain.read_u16());
        wait(1.0);
    }
}

こちらを動かすと無事以下のようにログが出力され明るさセンサーの値が表示されます。

image

検索して調べればすぐ出てくるだろうと思っていたら、調べ方がよくないのか、ぜんぜん出てこなかったので、未来の自分のために書き留めておきます。

それではよき Milkcocoa mbed Life を!