2011/12/12(月)mbed向けにAD-128160-UARTのライブラリ作った
2011/12/12 18:14
このLCDの特徴としては
- 3.3V単電源で駆動できる
- 少ない信号線で制御できる(txとresetの二線のみ)
- 点、直線、四角形、円などの図形を高速に描画できる
- ASCIIフォントが組み込まれている。(設定を行うことで日本語も書き込めるみたいです)
- miniUSB端子が付いており、PCからもコマンドを送ることで制御できる
というようにスペック上は魅力あふるるLCDなのですが、発売後数ヶ月経ってもaitendoが碌にデータシートを公開していないため、これまでは真っ暗な液晶を眺めながら可能性を想像する程度の置物レベルの価値しかありませんでした。
現在はGingaXさんが使い方をまとめてくださって、基本的な使い方はわかるようになったので今回はmbed用にライブラリをつくってみたという次第です。
使ってみる
写真
回路図
プログラム
#include "mbed.h" #include "AD128160.h" AD128160 lcd(p9,p20);//tx reset //2バイトRGBをつくるための関数 int rgb565(int r, int g,int b) { int rgb; rgb = (r & 0xF8) << 8; /* RRRRR----------- */ rgb |= (g & 0xFC) << 3; /* -----GGGGGG----- */ rgb |= b >> 3; /* -----------BBBBB */ return rgb; } int main() { lcd.backgroudColor(rgb565(255,0,0));//文字の背景色を赤に設定 lcd.locate(2,lcd.rows()/2); //大体真ん中あたりに移動して lcd.printf("Hello World!\n"); //お馴染みの文を表示 lcd.color(rgb565(0,255,0)); //図形の色を緑に設定 lcd.box(12,76,116,100,0); //塗りつぶしなしで矩形表示 lcd.box(8,120,124,146,1); //塗りつぶしありで矩形表示 lcd.color(rgb565(255,0,0)); //図形の色を赤に設定 lcd.circle(16,40,16,0); //塗りつぶしなしで円表示 lcd.circle(48,40,16,1); //塗りつぶしありで円表示 lcd.circle(80,40,16,1); //塗りつぶしありで円表示 lcd.circle(112,40,16,0); //塗りつぶしなしで円表示 }細かいライブラリの使い方なんかはクラスリファレンスを読んでください。
ライブラリをつくるときにStreamクラスを継承して_putc()メンバー関数をLCDにあわせて作成することでprintfにもあっさり対応できてます。
画像も表示させてみる
どのくらいの発色なんかなーと16bit bitmapデータを作って表示させてみました。
まーまー綺麗に表示できますね。
こちらのプログラムも一応ここに置いておきます。
試すときの128x128の16bit bitmapは各自準備してください。。
2011/07/29(金)RTnoをmbedに移植した
2011/07/29 22:20
RTnoはArduino上でRTコンポーネントを開発するためのライブラリです.
手軽なIOとしてRTコンポーネントを作ることができるのはとても良いのですが,如何せんArduinoだと気が利いた玩具くらいが限界だと感じるのでmbedに移植してみました.
移植とはいっても綺麗にクラス分けされていたので,作業としては通信周りとあとはちょこちょこくらいでさくっと終了です.
プログラム
元々のRTnoと同じくRTnoProxyを利用します.勘違いで古いバージョンを使ってただけでした(・ω<)-☆
雛形
RTno_Template雛形です.
これを色々と書き換えてRTコンポーネントにすることができるのです.
IO制御のサンプル
RTno_digitalInOutポート仕様
名称 | I/O | データタイプ | 意味 |
---|---|---|---|
led | IN | TimedLongSeq | mbed上のLED制御 |
in0 | OUT | TimedLongSeq | p5~p10のポート入力を知る |
out0 | OUT | TimedLongSeq | p15~p20のポート出力制御 |
使い方
大体想像通りの動きだと思うので,ここではledポートだけを使ってみます.rtm-naming-serviceとRT System Builderはあらかじめ起動しているものとします.
rtc.conf内を
corba.nameservers:localhost exec_cxt.periodic.rate:500.0 Test.RTnoProxy.config_file: RTnoProxy.conf logger.enable:NORTnoProxy.conf内を
conf.default.comport:\\\\.\\COM34 conf.default.baudrate:115200とします,COM番号など環境に依る部分は適宜書き換えてください.
そうしたら,RTnoProxyCompとDataPortTestCompを起動します.
RT System Builder上でRTnoProxyCompのledとDataPortTestCompのlongSeqOutを繋いで,どちらも状態をActiveにします.
次に画像のようにDataPortTestComp上で
L 4 1 0 1 0と入力すると
mbed上のLEDが光るという寸法です.
同じような感じでin0ポートでmbed上での入力が知れたり,out0ポートでmbed上のデジタル出力を制御できたりします.
モータ制御のサンプル
RTno_MotorControl今度はエンコーダ付きモータであるRDO-29B54AふたつをSabertooth2X25で制御してみたサンプルです.
ポート仕様
名称 | I/O | データタイプ | 意味 |
---|---|---|---|
encorder | OUT | TimedLongSeq | モータの現在のエンコーダ値を知る |
position | IN | TimedLongSeq | モータの入力値の位置まで動かす |
回路図
読みにくくてすいません.
sabertooth2x25のDIPスイッチは2,3,5番をONにした状態です.
使い方
rtm-naming-serviceとRT System Builderはあらかじめ起動しているものとします.rtc.conf内を
corba.nameservers:localhost exec_cxt.periodic.rate:500.0 Test.RTnoProxy.config_file: RTnoProxy.conf logger.enable:NORTnoProxy.conf内を
conf.default.comport:\\\\.\\COM34 conf.default.baudrate:115200とします,COM番号など環境に依る部分は適宜書き換えてください.
RTnoProxyCompとDataPortTestCompを起動します.
RT System Builder上でRTnoProxyCompのencoderとDataPortTestCompのlongSeqIn,RTnoProxyCompのpositionとDataPortTestCompのlongSeqOutを繋いで,どちらも状態をActiveにします.
次に画像のようにDataPortTestComp上で
L 2 1000 -2000と打ち込むとモータが動き出し,しばらくして目的の位置に達したら停止します.
DataPortTestComp上でvと打ち込むと現在のエンコーダ値を見ることができて,大体指定の位置に動いたんだなということがわかります.
どうでしょう.これくらいのことができれば結構本格的なRTコンポーネントを使った機器まで作れそうな気がしますよね.
既知の問題点
ポートは配列しか扱えない手元のJapaninoでオリジナルのRTnoを使用してもそうなので,RTnoの元々の仕様なのかも……?違うようです.もう一回確認してみます- 解決してアップーデートしました.(8/1)
シリアル通信をバッファリングしてないMODSERIALなどのバッファ付きの通信を使いたかったけど,うまいこと動かなかった.うーん.- 通信待ちでタイムアウトしない以外は問題なさそう…?
- Arduino側の仕様に併せているためTimedDouble型を内部でfloat型として扱っている.精度が半分になって勿体無いなぁ.
- RTnoProxyに手を入れるしか….
2010/07/01(木)mbedでZY-FGD1442701V1を動かしてみた その1
2010/07/01 23:18
3.3V単一電源で駆動できるほかデモプログラムも用意されているため、とりあえず動かして見るといったことが簡単にできます。
また、キャリーボード付きで1200円と非常に安価という特徴もあります。
ちょっと前に買って積んだままになっていたものを見つけたので、mbedを使って動かしてみました。
動かしてみたところ
ひどい写真だ…。
画面いっぱいに赤色を表示させています。
回路図
mbedも駆動が3.3Vなので、とてもシンプルな回路図となりますね。
プログラム
ZY_FGD1442701V1_samplembedにはBusOutというライブラリが用意されていて、今回はこのライブラリを使用しました。
この例のようにバイト単位で出力を行うときなど、繋ぐピンを意識せず処理を行うことができるので非常に便利です。
今回はとりあえずデモプログラムをmbed向けにほんの少しだけ書き換えただけです^^;
次回は16bitビットマップ画像をSDカードから読み込んで表示させてみたいと思います。
2010/06/07(月)mbed + RFIDリーダーで入室管理
2010/05/27(木)mbedが届きました
2010/05/27 22:17
mbedは風変わりなマイコンです。
開発の流れは
- ブラウザ上でプログラミング、コンパイルを行う。
- フラッシュメモリとして認識されているmbedの中にダウンロードして実行。
また、ブラウザとフラッシュメモリが動かせるならWindows、Linuxなど環境に依存しない面も便利ですね。
アナログ入力やPWMはもちろん複数のSerial,I2C,SPIがついている他、イーサネットに対応しているため使いこなせればとても面白いものが作れそうです。
これからちょっとずつ遊んでいけたらなと思ってます。