2011/12/12(月)mbed向けにAD-128160-UARTのライブラリ作った

2011/12/12 18:14 mbedimportnucho
aitendoには高速1.77インチ液晶モジュールというとても便利そうなLCDモジュールが売っています。

このLCDの特徴としては
  • 3.3V単電源で駆動できる
  • 少ない信号線で制御できる(txとresetの二線のみ)
  • 点、直線、四角形、円などの図形を高速に描画できる
  • ASCIIフォントが組み込まれている。(設定を行うことで日本語も書き込めるみたいです)
  • miniUSB端子が付いており、PCからもコマンドを送ることで制御できる
などなど嬉しいことずくめです。これは一家にひとつ常備しておかなくてはなりませんね。知りませんけど。

というようにスペック上は魅力あふるるLCDなのですが、発売後数ヶ月経ってもaitendoが碌にデータシートを公開していないため、これまでは真っ暗な液晶を眺めながら可能性を想像する程度の置物レベルの価値しかありませんでした。
現在はGingaXさんが使い方をまとめてくださって、基本的な使い方はわかるようになったので今回はmbed用にライブラリをつくってみたという次第です。

使ってみる

写真

RIMG0592_org

回路図

AD_128160_UART_circuit

プログラム

#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にもあっさり対応できてます。

画像も表示させてみる

RIMG0595_org
どのくらいの発色なんかなーと16bit bitmapデータを作って表示させてみました。
まーまー綺麗に表示できますね。

こちらのプログラムも一応ここに置いておきます。
試すときの128x128の16bit bitmapは各自準備してください。。

2011/12/06(火)DSO Nano v2が壊れたのでテキトー修理

2011/12/06 06:21 電子工作importnucho
フィジカルコンピューティング関連でアンテナを張っている方はご存知かもしれませんが、DSO Nano v2というちっちゃいオシロスコープがあります。
ちゃんとした計測器として使えるかどうかはさておいて、ちょっとした波形をみてキャプチャしたり、ちょっとしたPWMを出力したりなどと出来るため、そこそこ便利に使っていました。

しかしこのたび「うぇーいうぇーいアババ」とそこらのバカ学生顔負けの使い方をしていたらショートさせてしまい、PCと繋いでも認識されずに通信ができなくなってしまいました。
一応修理を行ったので、そのことを記録しておきます。もしも同じような壊し方をした人がいらっしゃれば参考に…。

修理

とりあえず分解してみると、
RIMG0547
のようにL2とL3が焦げていました。

回路図を確認するとこれらはフェライトビーズのようです。
フェライトビーズとはノイズをカットするための部品で、直流成分に対しては0.数Ωなのに対して100MHzには数百Ωになったりする偉いやつです。

しかしフェライトビーズが手元になかったので、「まぁノイズカットはなくても大丈夫っちゃ大丈夫だろ…大丈夫だよな…」と
RIMG0550
このようにジャンパしたら無事に?PCから認識されて通信が可能になりました。やってみるものですね。まぁ壊すときも同じような流れだったんですけど。

問題なくファームの更新なども行えることを確認しましたが、このままでは良い子も悪い子もあんまり真似しない方がいい状態かと思います。
フェライトビーズを置き換えれば完全に大丈夫なのでしょうが、どの値を付ければいいのかちょっとよくわかりません。サイズがおんなじこのあたりを使えば良いのかな。。

参考

DSO nano V2の回路図