MARMEX_OB基板OLEDライブラリ (MARMEX_OB_oled)
.
!
This page has been written in Japanese only, sorry.
概要
MARMEX_OB拡張基板に搭載されたOLEDパネルをmbedから利用するためのライブラリです.
MARMEX_OB基板は,CQ出版より販売されている書籍『トランジスタ技術増刊「2枚入り!組み合わせ自在!超小型ARMマイコン基板」』に付属のMARY基板のオプションとして,マルツエレックより販売されておりOLEDと加速度センサを搭載しています.
このライブラリは,このOLEDに描画行うためのルーチンを提供します.
ライブラリ自体はNokiaLCDライブラリを拡張する形で作られており,このライブラリと同じインターフェースを用いて制御できます.
接続
MARMEX_OBとmbedの間はMAPLE基板を介して接続します.
MAPLE基板はmbed,LPCXpresso用のベースボードとして開発された基板で,2個のMARMEX(MARY拡張基板)用のスロットを備えています(これに加えてさらにもう1個のフリースロット(ジャンパ線などで配線する)が用意されています).
MAPLE基板を介してmbedとMARMEX_OBを接続する場合,MAPLE基板のジャンパとDIPスイッチをmbed用に設定する以外は特別な配線/設定は必要ありません.
コード
サンプルコードはMAPLE基板のスロット1と2を想定した接続を前提に書かれています.
このコードは次のURLからインポートしてください.
Import programMARMEX_OB_oled__HelloWorld
A class library for OLED on MARMEX_OB board. MARY拡張のMARMEX_OB基板のOLEDをmbed+MAPLE基板で動かすためのライブラリです.このサンプルではMAPLEに用意されているMARMEXスロットの1番に搭載したOLEDを制御するようになっています.詳細はCode&APIからソースやAPI詳細をご覧ください
Information
インポートしたプログラムはNokiaLCDライブラリを含んだ形になっています.
MARMEX_OB用ライブラリ「MARMEX_OB_oled,h」はNokiaLCDライブラリを利用しながら動作するようになっています.
サンプルプロジェクトに含まれる「main.cpp」がこのライブラリを利用する例です.
NokiaLCDライブラリのサンプルと同様な例を載せてあります.
#include "mbed.h" #include "MARMEX_OB_oled.h" // oled1 is for MARMEX_OB_oled board on MAPLE slot 1 // oled1 is for MARMEX_OB_oled board on MAPLE slot 2 MARMEX_OB_oled oled1( p5, p7, p8, p30, p11 ); // mosi, sclk, cs, rst, power_control //MARMEX_OB_oled oled2( p5, p7, p26, p21, p17 ); // mosi, sclk, cs, rst, power_control int main() { oled1.background( 0x000000 ); oled1.cls(); int colorbar_width = MARMEX_OB_oled::WIDTH / 8; for ( int i = 0; i < 8; i++ ) oled1.fill( colorbar_width * i, 0, colorbar_width, MARMEX_OB_oled::HEIGHT, ((i & 0x4) ? 0xFF0000 : 0x000000) | ((i & 0x2) ? 0x00FF00 : 0x000000) | ((i & 0x1) ? 0x0000FF : 0x000000) ); oled1.fill( 50, 50, 64, 64, 0xCCCCCC );; oled1.locate( 0, 3 ); oled1.printf( "Hello World!" ); oled1.locate( 0, 4 ); oled1.printf( "SPI = %s", MERMEX_OB_SPI_MODE_STR ); for (int i = 0; i < MARMEX_OB_oled::WIDTH; i++ ) { oled1.pixel( i, 80 + sin( (float)i / 5.0 ) * 10, 0x000000 ); } }
動作確認
mbed,MAPLE,MARMEX_OBを接続すると上の写真のようになります.
サンプルコードを動作させると,このような表示がされます.
Information
この写真では2枚のMARMEX_OB基板をスロット1と2の両方に接続しています.
サンプルコードをそのまま動作させると上記写真のようにスロット1に接続されたOLEDが動作します.
OLEDを1個だけ動作させる場合には,もう片方のスロットが空いている状態で構いません.
Information
基板手前側にジャンパ線やブレッドボード部に部品が載っているのが見えますが,これはこのライブラリに必要な配線や部品ではありません.
(写真が暗いですが,これは節電中のオフィス内でOLED表示に露出を合わせたためこうなってしまいました)
2台のMARMEX_OB動作
上の写真の例は,2台のMARMEX_OBとキャラクタ液晶を動作させた例です.
キャラクタ液晶の動作のためにTextLCDライブラリをインポートし,次のようなコードで動作を確認しました.
"oled1"がスロット1,"oled2"がスロット2のOLEDとなっています.
#include "mbed.h" #include "MARMEX_OB_oled.h" #include "TextLCD.h" // oled1 is for MARMEX_OB_oled board on MAPLE slot 1 // oled2 is for MARMEX_OB_oled board on MAPLE slot 2 MARMEX_OB_oled oled1( p5, p7, p8, p30, p11 ); // mosi, sclk, cs, rst, power_control MARMEX_OB_oled oled2( p5, p7, p26, p21, p17 ); // mosi, sclk, cs, rst, power_control TextLCD lcd(p25, p24, p12, p13, p14, p23); // rs, e, d0-d3 int main() { oled1.background( 0x000000 ); oled1.cls(); int colorbar_width = MARMEX_OB_oled::WIDTH / 8; for ( int i = 0; i < 8; i++ ) oled1.fill( colorbar_width * i, 0, colorbar_width, MARMEX_OB_oled::HEIGHT, ((i & 0x4) ? 0xFF0000 : 0x000000) | ((i & 0x2) ? 0x00FF00 : 0x000000) | ((i & 0x1) ? 0x0000FF : 0x000000) ); oled1.fill( 50, 50, 64, 64, 0xCCCCCC );; oled1.locate( 0, 3 ); oled1.printf( "Hello World!" ); oled1.locate( 0, 4 ); oled1.printf( "SPI = %s", MERMEX_OB_SPI_MODE_STR ); for (int i = 0; i < MARMEX_OB_oled::WIDTH; i++ ) { oled1.pixel( i, 80 + sin( (float)i / 5.0 ) * 10, 0x000000 ); } oled2.fill( 0, 0, 128, 128, 0xF1AC41 ); oled2.fill( 32, 0, 96, 128, 0x867D4C ); oled2.fill( 48, 0, 80, 128, 0x6BA3C9 ); oled2.fill( 80, 0, 48, 128, 0x69934D ); oled2.fill( 96, 0, 32, 128, 0xB8D14D ); lcd.printf( "MAPLE base board" ); lcd.printf( "mbed + MARMEX_OB" ); }
その他の情報
この他の詳細な情報は,このライブラリのページを参照してください.
http://mbed.org/users/nxpfan/programs/MARMEX_OB_oled__HelloWorld/lpa199/docs/
謝辞
このサンプルコードの作成にあたって,マルツエレック株式会社さんより,サンプルのハードやソフト,さらに貴重なアドバイスを頂きました.ありがとうございました.
変更履歴
日付 | 更新内容 |
2011/04/07 | : MARMEX_OB基板OLEDライブラリ公開 |
2011/04/08 | : 公開プログラム0.51版アップデートに伴い,ソース例と詳細情報へのリンクを更新 |
4 comments on MARMEX_OB基板OLEDライブラリ (MARMEX_OB_oled):
Please log in to post comments.
特に工夫はありませんが、やってみたら表示できましたので報告します。 olet2へはolet1と同じモノを出力しました。
MARMEX_OB基板OLEDライブラリの公開に感謝します。
追加です。CANモニターに使用としているのですが、文字が小さくて見にくいです。 何かの機会に、倍角などの表示もできたらもっとありがたいです。