mbedコンパイラがLPC1114に対応したのでLPC1114FN28(110円mbed)で遊んでいたら、MARY基板がLPC1114だということに気が付いた。
・トランジスタ技術増刊「2枚入り!組み合わせ自在!超小型ARMマイコン基板」
で、もしやと思って、買ってから一度も使わずに積んでいたMARY基板を引っ張り出してきた。
そして、mbedコンパイラでLチカを作って試したら動いてしまった!素晴らしい。
MARYは拡張基板がいろいろ出ているので使えたら面白そう。
実験に使ったソースはこれ。
MARY基板の回路図を見て、対応するピン番号を調べた。
//--------------------------------------
#include "mbed.h"
DigitalOut myled(xLED1); //G
//DigitalOut myled(xp12); //R
//DigitalOut myled(xp21); //B
int main() {
while(1) {
myled = 1;
wait(0.2);
myled = 0;
wait(0.2);
}
}
//---------------------------------------
bin―>HEX変換してから、USBケーブルを接続し、FlashMagicで書き込んだ。
MARY基板でのFlashMagicの使い方はここ。
mbed LPC1114コンパイラの使い方は、”じぇーけーそふと” さんのこの記事がわかり易い。
・mbedプラットフォームとmbed LPC1114FN28ファーストタッチ
MARY基板がmbedコンパイラでLチカ出来たので、OB基板(OLED Board)でOLEDライブラリが使えるか試してみた。
・MARMEX_OB基板OLEDライブラリ (MARMEX_OB_oled)
動いた!素晴らしい。
mbed LPC1768用の”MARMEX_OB基板OLEDライブラリ”をMARYで動かすのはピン番号を変更するだけだった。
これ―>MARMEX_OB_oled oled1( dp2, dp6, dp25, dp17, dp13 );
こちらの表記のほうが良いそうです。 (2013.09.22 追記)
―>MARMEX_OB_oled oled1( P0_9, P0_6, P0_2, P1_8, P1_4 );
表示が出てくるまでに少し時間が掛かる。
手順は。
1:”MARMEX_OB基板OLEDライブラリ”をインポート
2:mbedコンパイラをLPC1114用に切り替え
3:ソースのピン番号を変更
4:mbedライブラリを最新版にUpdate
5:コンパイル
6:binファイルをHEXに変換してFlash Magicで書き込む。
ただし、表示が出るまですごく時間がかかる。忘れた頃にやっと…という感じ。
―> LPC1114 mbedライブラリrev.67で解決。 (2013.09.22 追記)
rev.67では”MARMEX_OB_oled.h”に以下の修正が必要。
修正前:SPI_FREQUENCY = 20000000
修正後:SPI_FREQUENCY = 10000000
詳細は、こちら。
OLED基板にはLIS33DEというI2C接続の加速度センサも載っているので試してみた。
これも問題なくmbedコンパイラで使えた。
動作確認に使ったプログラムはこれ。
//------------------------------------------------------------------
#include "mbed.h"
#include "MARMEX_OB_oled.h"
//====================
// MEMS Device Address
//====================
#define MEMS_DEV_ADDR 0x38
//=======================
// MEMS Register Address
//=======================
#define MEMS_CTRL_REG1 0x20
#define MEMS_OUT_X 0x29
#define MEMS_OUT_Y 0x2b
#define MEMS_OUT_Z 0x2d
I2C i2c(dp5, dp27);
const int addr = MEMS_DEV_ADDR;
MARMEX_OB_oled oled1( dp2, dp6, dp25, dp17, dp13 ); // mosi, sclk, cs, rst, power_control
int main() {
oled1.background( 0x000000 );
oled1.cls();
oled1.locate( 0, 3 );
oled1.printf( "Hello World!" );
char cmd[2];
cmd[0] = MEMS_CTRL_REG1;
cmd[1] = 0x47;
i2c.write(addr, cmd, 2);
while (1) {
wait(0.5);
cmd[0] = MEMS_OUT_X;
i2c.write(addr, cmd, 1);
i2c.read(addr, cmd, 1);
oled1.locate( 0, 5 );
oled1.printf("OUT_X=%d ", (signed char)cmd[0]);
cmd[0] = MEMS_OUT_Y;
i2c.write(addr, cmd, 1);
i2c.read(addr, cmd, 1);
oled1.locate( 0, 6 );
oled1.printf("OUT_Y=%d ", (signed char)cmd[0]);
cmd[0] = MEMS_OUT_Z;
i2c.write(addr, cmd, 1);
i2c.read(addr, cmd, 1);
oled1.locate( 0, 7 );
oled1.printf("OUT_Z=%d ", (signed char)cmd[0]);
}
}
//------------------------------------------------------------------
次は、XB基板(XBee Board)を使ってみた。
単純にXBeeを使うのではつまらないので、iPadとBluetooth通信をしてみた。
mbed LPC1114コンパイラ + MARY基板 + XB基板(XBee Board) + SBXBT + USB Bluetootドングルを使用した。
iPadとBLE通信ができた。MARY基板側は単なるシリアル通信だからできて当然か…
iPad + konashi.js と SBXBT + SBBLE を使用した。(末尾の参考リンク参照)
XB基板(XBee Board) には、micro SDカードソケットも付いているので、ついでに試してみた、
XB基板上のmicro SDも動いた。
mbedサンプルプログラムのピン番号を変更しただけ。
mbedライブラリがほとんどそのまま使えるのは便利。
これを使わせてもらった。
・SDFileSystem_HelloWorld
このプログラムのピン番号を変更。
これ―>SDFileSystem sd(dp2, dp1, dp6, dp25, "sd");
MARY基板とその拡張基板がmbed LPC1114コンパイラで使えることは大体確認出来た。
あとはMARY基板の特徴である基板間通信だが、もうパワーが尽きた。
誰かがやってくれるのを待つ事にする。(^o^)/
mbed LPC1114でFlash Magicを使うときbinー>HEXファイル変換に”BIN2HEX.EXE”を使っていたが、これはWin7 64bit版では動かず不便だった。
Hexplorerというのを試してみたら、うまくいった。
使い方は、Hexplorerでbinファイルを開いて、メニューから
File ―> Export ―> Intel Hex
関連する記事
・mbed LPC1114FN28を使ってみた。
参考リンク
・Getting started with mbed LPC1114
・mbed LPC1114での遊び方
・LPC1114 pinout pictures
・DIP_ARM LPC1114FN28のプログラムをシリアルで書き込む
・フラッシュ書込み
・mbed LPC1114で「I2C接続の小型LCDボード」を使ってみた!
・mbedプラットフォームとmbed LPC1114FN28ファーストタッチ
・konashi - A physical computing toolkit for iPhone, iPod touch and iPad
・SBBLE(サブレー) - BLEフィジカルコンピューティング用ファーム
・ランニングエレクトロニクス - SBXBT