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

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

J16、J10、J13、J7と刻印されているのですがピンの番号ではないらしく、どのピンが割り当てられているかさっぱり分からない...
回路図を見てみる
しかたないので回路図を見てみます。Mbed Shield - Seeed Wikiから回路図をダウンロードして、AUTODESK EAGLE8.0で開いてみたところ

対応するピン番号が分かってきました。
// p14 = j10
// p27 = j7
// p10 = j13
デジタルなピンはこのようになっているようです。
LED点滅させてみる

早速やってみます。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が点滅します。

アナログピンの場合

たとえば、このように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);
}
}
こちらを動かすと無事以下のようにログが出力され明るさセンサーの値が表示されます。

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