robo8080のブログ

ロボット製作や電子工作など。

mbed LPC1114コンパイラでMARY基板を動かしてみた。

2013年09月16日 | mbed LPC1114FN28

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

 

ジャンル:
ウェブログ
コメント (2)   この記事についてブログを書く
この記事をはてなブックマークに追加
« 9月15日(日)のつぶやき | トップ | 9月16日(月)のつぶやき »
最近の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (Ptarmigan)
2015-05-26 00:30:07
LPC1114FN28でmicroSDからデータを読み込もうとしているのですが、csvファイルから読み込もうとすると状態監視しているTeraTerm上で文字化けして延々表示され続けます(ボー・レートをいくつにしてもダメです)。。
CSピンのつなぐ場所が悪いとかで起こるのでしょうか?
それとも読み込み変数の配列を512行8列にしていたのでそれが悪いのでしょうか?マイコンとライブラリとの相性が悪いとも思えないのですがどう試行錯誤してもうまくいきません・・・。。
Re:Unknown (roboz80)
2015-05-26 10:03:13
サンプルプログラムを動かしてみたことしかないので私も詳しい事はよく分かりません。
mbedの日本語フォーラムで質問してみては?
ttps://developer.mbed.org/forum/ja/

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。

あわせて読む

トラックバック

この記事のトラックバック  Ping-URL
  • 30日以上前の記事に対するトラックバックは受け取らないよう設定されております。
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。