秋月電子などで販売されているSHARP製HR-TFTモノクロメモリ液晶を、直接駆動するためのライブラリです。 図形、文字列の描画が可能です。 日本語のフォントも内包していますが、FlashサイズやRAMサイズが小さいものだと扱いきれないかもしれません。 既存のライブラリとは違い、貴重なSPIポートを占拠しません。DigitalOut端子3本でSPIモドキを実現しています。 結線方法については、デモプログラムのページをご参照ください。

Dependents:   SHARP_MEMORYLCD_WJ

内部画素記憶配列に関する注意

このライブラリでは、ライブラリを通して描かれた全画素の情報ををchar型の一次元配列として記憶します。
故に、小さなRAMしか搭載していないものではOutOfMemoryになり、うまく動作しません

init関数で固まる場合は、memset(R, -1, siz); で配列が初期化できずに止まっている可能性があります。

内部画素記憶配列のサイズは、((表示幅[px] / 8) * 表示高さ[px])[byte]です。
表示幅400px、表示高さ240pxの場合は 12Kbyte(12,000byte) の領域を要します。

シャープ製メモリ液晶直接駆動用ライブラリ

秋月電子などで販売されている、シャープ製のモノクロメモリ液晶を
直接駆動させるためのライブラリとデモプログラムです。

図形や文字列を比較的簡単に表示させることが可能です。
また、メモリに余裕があれば日本語(全角文字)も描画可能です。

文字描画のアルゴリズムは、こちらのページで公開されていた
日本語ビットマップフォント表示アルゴリズムを改変して使用しています。
松浦光洋様、素晴らしいアルゴリズムを公開していただきありがとうございます。
現在ソースコードの公開は停止されている模様です。

また、ビットマプフォントにはM+ BITMAP FONTSで公開されている
Mplus-gothic-medium-R-normal 12pxを使用しています。


使用できる液晶製品

LS027B7DH01Aと同一の駆動方式であれば駆動可能です。

対応済みと思われる製品(テストはLS027B7DH01Aで行っています)

LS012B7DD01とLS013B7DH06は駆動方式が異なるため使用できません。

直接結線して駆動することを前提としてコードを書いているので、
間にSRAMやEEPROMなどを挟んだり、4線式SPIの使用を前提としたものでは動作しません。


デモプログラムのページ(結線方法など)

mbed LPC1768用デモプログラム


描画方式と内部画素記憶配列について

メモリ液晶の描画方式は

  1. ゲートラインアドレス(1から始まる行番号)を選択
  2. 1行あたりの画素数を8画素ごとに区切って連続転送する(幅 / 8の数だけ) というものです。

つまり2値(白黒)の8画素なので、char型(1byte)の配列で画素をコントロールすることが可能です。

一見単純に見えますが、行ごとの更新では更新したくない画素も更新対象に入ってしまいます。
例えば、このような行がある場合、

11111011 11111111

13番目の画素に黒点を打つために「11111111 11110111」のデータを送ると・・・

11111111 11110111 ←6番目の画素も上書きされてしまう

更新したくない画素も更新されてしまいます。

これでは意図した描画が簡単に行えませんので、このライブラリでは現在の画素情報を
char型の1次元配列で保管し(サイズは 幅 / 8 * 高さ)、この記憶情報を更新してから、液晶に
送ることによって図形などの描画を実現しています。
例えば、

11111011 11111111

13番目の画素に黒点を打つために「11111111 11110111」のデータを表示したい・・・

.......11111011 11111111 ←もともと表示されていたデータ
AND)...11111111 11110111 ←表示したいデータと論理積をとる
++++++++++++++++++++++++
.......11111011 11110111 ←液晶に書き込むべき値がでてくる

これで更新すべき値を算出して、液晶に流し込んでいます。

また、この液晶は1が白0が黒です。
これもわかりにくいので、このライブラリ内では1を黒0を白として扱っています。


即時描画(immidiate)について

関数の最後の引数にbool型のimmidiateというものがありますが、これは即時描画を行うかどうかのフラグです。

例えばpixel関数で1個打点したあと、immidiatetrueであればすぐに液晶に反映されます。
immidiatefalseの場合、内部画素記憶配列のみを更新し、液晶には反映しません。

1行だけの反映であれば大した時間はかかりませんが、反映する行が増えれば増えるほど
処理の時間がかかってしまいますので、書きたい情報を全部内部画素記憶配列に書き込んでから
一気にドバっと反映するほうが効率的で処理時間の短縮が見込めます。

なので、文字や四角形や格子模様などを複数行広範囲にわたって書き込む場合はimmidiatefalseにして
すべての描画処理が完了したあとにwriteArrayN関数やwriteArrayA関数を使用して
ドバっと更新するほうがお得です。

ちなみに、各関数のimmidiateのデフォルト値はtrueです。
引数を省略した場合は即時描画されてしまいますのでご注意ください。


COM反転信号

COM反転は、液晶の寿命を延ばすために(焼き付き防止?)人間に見えない速度で液晶を明滅させる仕組みです。
COM反転信号はCOM反転を行うタイミングを液晶に伝達するもので、外部信号と内部信号の2種類があります。
このライブラリでは呼ばれたコンストラクタによって処理を変えており、
引数が3つのコンストラクタで呼ばれたらCOM反転は内部信号を使用します。
引数が5つのコンストラクタで呼ばれたらCOM反転は外部信号を使用します。
(ただし、引数が5つでもDigitalOutができないピンであれば内部信号に切り替わる)

引数が3つのコンストラクタを呼ぶ場合は、EXTCOMの端子VSS(GND)に接続し 引数が5つのコンストラクタを呼ぶ場合は、EXTCOMの端子VDD(3.3-5V)に接続してください。

COM反転信号はTickerを使って自動的に送出される仕組みになっていますが
init関数を呼ぶまではタイマーは作動しません。ユーザーがderegTimer関数でタイマーを解除した場合も、
regTimer関数で再度タイマーを開始するまでは止まったままになります。

また、int main()が終了した場合もSH_MLCD_Jクラスのインスタンスそのものが削除されて
COM反転信号が止まりますので、プログラムの終了を意図的に遅延させるか、プログラム終了後は
速やかに液晶を取り外してください。

Committer:
Yajirushi
Date:
Fri Dec 11 05:24:50 2015 +0000
Revision:
0:8512c64be557
GR-SAKURA???????mbed????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yajirushi 0:8512c64be557 1 /* Sharp MemoryLCD Graphic Library (with Japanese Font)
Yajirushi 0:8512c64be557 2 * Copyright (c) 2015 Yajirushi(Cursor)
Yajirushi 0:8512c64be557 3 *
Yajirushi 0:8512c64be557 4 * Released under the MIT license
Yajirushi 0:8512c64be557 5 * http://opensource.org/licenses/mit-license.php
Yajirushi 0:8512c64be557 6 *
Yajirushi 0:8512c64be557 7 * Permission is hereby granted, free of charge, to any person obtaining a copy
Yajirushi 0:8512c64be557 8 * of this software and associated documentation files (the "Software"), to deal
Yajirushi 0:8512c64be557 9 * in the Software without restriction, including without limitation the rights
Yajirushi 0:8512c64be557 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Yajirushi 0:8512c64be557 11 * copies of the Software, and to permit persons to whom the Software is
Yajirushi 0:8512c64be557 12 * furnished to do so, subject to the following conditions:
Yajirushi 0:8512c64be557 13 *
Yajirushi 0:8512c64be557 14 * The above copyright notice and this permission notice shall be included in
Yajirushi 0:8512c64be557 15 * all copies or substantial portions of the Software.
Yajirushi 0:8512c64be557 16 *
Yajirushi 0:8512c64be557 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Yajirushi 0:8512c64be557 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Yajirushi 0:8512c64be557 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Yajirushi 0:8512c64be557 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Yajirushi 0:8512c64be557 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Yajirushi 0:8512c64be557 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
Yajirushi 0:8512c64be557 23 * THE SOFTWARE.
Yajirushi 0:8512c64be557 24 * -----------------------------------------------------------------
Yajirushi 0:8512c64be557 25 * M+ BITMAP FONTS
Yajirushi 0:8512c64be557 26 * http://mplus-fonts.osdn.jp/mplus-bitmap-fonts/index.html
Yajirushi 0:8512c64be557 27 *
Yajirushi 0:8512c64be557 28 * LICENSE
Yajirushi 0:8512c64be557 29 *
Yajirushi 0:8512c64be557 30 * These fonts are free software.
Yajirushi 0:8512c64be557 31 * Unlimited permission is granted to use, copy,
Yajirushi 0:8512c64be557 32 * and distribute it, with or without modification,
Yajirushi 0:8512c64be557 33 * either commercially and noncommercially.
Yajirushi 0:8512c64be557 34 *
Yajirushi 0:8512c64be557 35 * THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
Yajirushi 0:8512c64be557 36 */
Yajirushi 0:8512c64be557 37 #include "mbed.h"
Yajirushi 0:8512c64be557 38
Yajirushi 0:8512c64be557 39 #ifndef SH_MLCD_J
Yajirushi 0:8512c64be557 40 #define SH_MLCD_J
Yajirushi 0:8512c64be557 41
Yajirushi 0:8512c64be557 42 //SPIモドキの持ち時間
Yajirushi 0:8512c64be557 43 #define SHMLCD_J_SPIWAIT 1
Yajirushi 0:8512c64be557 44
Yajirushi 0:8512c64be557 45 //MLCDの命令
Yajirushi 0:8512c64be557 46 #define SHMLCD_J_WRITE 0x80
Yajirushi 0:8512c64be557 47 #define SHMLCD_J_COM 0x40
Yajirushi 0:8512c64be557 48 #define SHMLCD_J_CLEAR 0x20
Yajirushi 0:8512c64be557 49 #define SHMLCD_J_DUMMY 0x00
Yajirushi 0:8512c64be557 50
Yajirushi 0:8512c64be557 51 //ピクセルモード
Yajirushi 0:8512c64be557 52 #define SHMLCD_J_BLACK 0
Yajirushi 0:8512c64be557 53 #define SHMLCD_J_ERASE 1
Yajirushi 0:8512c64be557 54 #define SHMLCD_J_INVERT -1
Yajirushi 0:8512c64be557 55
Yajirushi 0:8512c64be557 56 /** シャープ製メモリ液晶用直接駆動ライブラリ
Yajirushi 0:8512c64be557 57 *
Yajirushi 0:8512c64be557 58 * 秋月電子通商などで販売されている、シャープ製メモリ液晶を直接駆動させるためのライブラリです。
Yajirushi 0:8512c64be557 59 * 「みんなのラボ」から販売されている、SRAMを介すもの(メモリ液晶ブレークアウト基板)では動作しません。
Yajirushi 0:8512c64be557 60 *
Yajirushi 0:8512c64be557 61 * 2015年時点で販売されている、同じ駆動方式のLCD一覧:(このライブラリで駆動可能)
Yajirushi 0:8512c64be557 62 * LS010B7DH01, LS013B7DH05, LS013B7DH03, LS027B7DH01A, LS044Q7DH01
Yajirushi 0:8512c64be557 63 * (LS012B7DD01, LS013B7DH06は駆動方式が異なるため使用できません)
Yajirushi 0:8512c64be557 64 *
Yajirushi 0:8512c64be557 65 * Example:
Yajirushi 0:8512c64be557 66 * @code
Yajirushi 0:8512c64be557 67 * //メモリ液晶に様々な図形や文字を表示する
Yajirushi 0:8512c64be557 68 *
Yajirushi 0:8512c64be557 69 * #include "mbed.h"
Yajirushi 0:8512c64be557 70 * #include "SH_MLCD_J.h"
Yajirushi 0:8512c64be557 71 *
Yajirushi 0:8512c64be557 72 * SHMLCD_J mlcd(p26, p25, p24);
Yajirushi 0:8512c64be557 73 *
Yajirushi 0:8512c64be557 74 * int main(){
Yajirushi 0:8512c64be557 75 *
Yajirushi 0:8512c64be557 76 * wait(20.0); //結線完了までの待ち時間(不要であれば削除)
Yajirushi 0:8512c64be557 77 *
Yajirushi 0:8512c64be557 78 * //初期化(引数にはデータシートに書いてある表示横幅と表示高さを指定する)
Yajirushi 0:8512c64be557 79 * mlcd.init(400, 240);
Yajirushi 0:8512c64be557 80 *
Yajirushi 0:8512c64be557 81 * //四角形(即時描画)
Yajirushi 0:8512c64be557 82 * mlcd.drawRect(15, 15, 20, 20, SHMLCD_J_BLACK, true);
Yajirushi 0:8512c64be557 83 * mlcd.drawRect2(45, 15, 65, 35, SHMLCD_J_BLACK, true);
Yajirushi 0:8512c64be557 84 * mlcd.fillRect(75, 15, 20, 20, SHMLCD_J_BLACK, true);
Yajirushi 0:8512c64be557 85 * mlcd.fill2Point(105, 15, 125, 35, SHMLCD_J_BLACK, true);
Yajirushi 0:8512c64be557 86 *
Yajirushi 0:8512c64be557 87 * //円(あとで描画):第5引数がfalseだと即時描画しない
Yajirushi 0:8512c64be557 88 * mlcd.drawCircle(25, 55, 10, SHMLCD_J_BLACK, false);
Yajirushi 0:8512c64be557 89 * mlcd.fillCircle(55, 55, 10, SHMLCD_J_BLACK, false);
Yajirushi 0:8512c64be557 90 *
Yajirushi 0:8512c64be557 91 * //小さい文字(あとで描画):第5引数がfalseだと即時描画しない
Yajirushi 0:8512c64be557 92 * char str1[] = "small text! 小さい文字は余裕。\n改行も有効です。タブは無理。";
Yajirushi 0:8512c64be557 93 * mlcd.ws(str1, 10, 80, SHMLCD_J_BLACK, false);
Yajirushi 0:8512c64be557 94 *
Yajirushi 0:8512c64be557 95 * //大きい文字(即時描画):第4引数にズーム倍率(整数)で倍角可能
Yajirushi 0:8512c64be557 96 * char str2[] = "Large Text! 2倍角も余裕。";
Yajirushi 0:8512c64be557 97 * mlcd.ws(str2, 10, 160, 2, SHMLCD_J_BLACK, true);
Yajirushi 0:8512c64be557 98 *
Yajirushi 0:8512c64be557 99 * wait(3.0);
Yajirushi 0:8512c64be557 100 *
Yajirushi 0:8512c64be557 101 * //表示画素全部更新(ここで円と小さい文字が描画されます)
Yajirushi 0:8512c64be557 102 * mlcd.writeArrayA();
Yajirushi 0:8512c64be557 103 *
Yajirushi 0:8512c64be557 104 * wait(3.0);
Yajirushi 0:8512c64be557 105 *
Yajirushi 0:8512c64be557 106 * //設定された表示幅と高さを取得
Yajirushi 0:8512c64be557 107 * int width_size = mlcd.getWidth();
Yajirushi 0:8512c64be557 108 * int height_size = mlcd.getHeight();
Yajirushi 0:8512c64be557 109 *
Yajirushi 0:8512c64be557 110 * //グリッドを表示
Yajirushi 0:8512c64be557 111 * //垂直線を等間隔にXOR表示(描画はあとで):第4引数は描画モード
Yajirushi 0:8512c64be557 112 * //描画モード(fillCircleはSHMLCD_J_INVERTが使えません):
Yajirushi 0:8512c64be557 113 * // SHMLCD_J_BLACK (0): 黒で描画します
Yajirushi 0:8512c64be557 114 * // SHMLCD_J_ERASE (1): 白で描画します
Yajirushi 0:8512c64be557 115 * // SHMLCD_J_INVERT (-1): 画素を反転(XOR)させます(白なら黒、黒なら白)
Yajirushi 0:8512c64be557 116 * for(int x=10; x<width_size; x+=20){
Yajirushi 0:8512c64be557 117 * mlcd.drawLine(x, 0, x, height_size-1, SHMLCD_J_INVERT, false);
Yajirushi 0:8512c64be557 118 * }
Yajirushi 0:8512c64be557 119 * //水平線を等間隔にXOR表示(描画はあとで):第4引数は描画モード
Yajirushi 0:8512c64be557 120 * for(int y=10; y<height_size; y+=20){
Yajirushi 0:8512c64be557 121 * mlcd.drawLine(0, y, width_size-1, y, SHMLCD_J_INVERT, false);
Yajirushi 0:8512c64be557 122 * }
Yajirushi 0:8512c64be557 123 *
Yajirushi 0:8512c64be557 124 * //表示画素特定部分だけ更新:ライン80からライン160まで更新
Yajirushi 0:8512c64be557 125 * mlcd.writeArrayN(80, 160);
Yajirushi 0:8512c64be557 126 *
Yajirushi 0:8512c64be557 127 * wait(3.0);
Yajirushi 0:8512c64be557 128 *
Yajirushi 0:8512c64be557 129 * //表示画素全部更新
Yajirushi 0:8512c64be557 130 * mlcd.writeArrayA();
Yajirushi 0:8512c64be557 131 *
Yajirushi 0:8512c64be557 132 * }
Yajirushi 0:8512c64be557 133 * @endcode
Yajirushi 0:8512c64be557 134 */
Yajirushi 0:8512c64be557 135 class SHMLCD_J{
Yajirushi 0:8512c64be557 136 public:
Yajirushi 0:8512c64be557 137 /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します
Yajirushi 0:8512c64be557 138 *
Yajirushi 0:8512c64be557 139 * @param vSCK メモリ液晶のSCK端子に出力するピンを指定
Yajirushi 0:8512c64be557 140 * @param vSI メモリ液晶のSI端子に出力するピンを指定
Yajirushi 0:8512c64be557 141 * @param vCS メモリ液晶のSCS端子に出力するピンを指定
Yajirushi 0:8512c64be557 142 * @param vCOM メモリ液晶のCOM端子に出力するピンを指定
Yajirushi 0:8512c64be557 143 * @param vDISP メモリ液晶のDISP端子に出力するピンを指定
Yajirushi 0:8512c64be557 144 */
Yajirushi 0:8512c64be557 145 SHMLCD_J(PinName vSCK, PinName vSI, PinName vCS, PinName vCOM, PinName vDISP);
Yajirushi 0:8512c64be557 146
Yajirushi 0:8512c64be557 147 /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します
Yajirushi 0:8512c64be557 148 *
Yajirushi 0:8512c64be557 149 * @param vSCK メモリ液晶のSCK端子に出力するピンを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 150 * @param vSI メモリ液晶のSI端子に出力するピンをを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 151 * @param vCS メモリ液晶のSCS端子に出力するピンをを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 152 * @param vCOM メモリ液晶のCOM端子に出力するピンをを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 153 * @param vDISP メモリ液晶のDISP端子に出力するピンをを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 154 *
Yajirushi 0:8512c64be557 155 * Example:
Yajirushi 0:8512c64be557 156 * @code
Yajirushi 0:8512c64be557 157 * #include "mbed.h"
Yajirushi 0:8512c64be557 158 * #include "SH_MLCD_J.h"
Yajirushi 0:8512c64be557 159 *
Yajirushi 0:8512c64be557 160 * DigitalOut i_sck(p26);
Yajirushi 0:8512c64be557 161 * DigitalOut i_si(p25);
Yajirushi 0:8512c64be557 162 * DigitalOut i_cs(p24);
Yajirushi 0:8512c64be557 163 * DigitalOut i_com(p23);
Yajirushi 0:8512c64be557 164 * DigitalOut i_disp(p22);
Yajirushi 0:8512c64be557 165 *
Yajirushi 0:8512c64be557 166 * int main(){
Yajirushi 0:8512c64be557 167 * SHMLCD_J mlcd(&i_sck, &i_si, &i_cs, &i_com, &i_disp); //<- 先に宣言したものを&(アドレス)で渡す
Yajirushi 0:8512c64be557 168 * mlcd.init(400, 240);
Yajirushi 0:8512c64be557 169 * mlcd.pixel(50, 50);
Yajirushi 0:8512c64be557 170 * }
Yajirushi 0:8512c64be557 171 * @endcode
Yajirushi 0:8512c64be557 172 */
Yajirushi 0:8512c64be557 173 SHMLCD_J(DigitalOut *vSCK, DigitalOut *vSI, DigitalOut *vCS, DigitalOut *vCOM, DigitalOut *vDISP);
Yajirushi 0:8512c64be557 174
Yajirushi 0:8512c64be557 175 /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します(COM端子とDISP端子は使用しません)
Yajirushi 0:8512c64be557 176 *
Yajirushi 0:8512c64be557 177 * @param vSCK メモリ液晶のSCK端子に出力するピンを指定
Yajirushi 0:8512c64be557 178 * @param vSI メモリ液晶のSI端子に出力するピンを指定
Yajirushi 0:8512c64be557 179 * @param vCS メモリ液晶のSCS端子に出力するピンを指定
Yajirushi 0:8512c64be557 180 */
Yajirushi 0:8512c64be557 181 SHMLCD_J(PinName vSCK, PinName vSI, PinName vCS);
Yajirushi 0:8512c64be557 182
Yajirushi 0:8512c64be557 183 /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します(COM端子とDISP端子は使用しません)
Yajirushi 0:8512c64be557 184 *
Yajirushi 0:8512c64be557 185 * @param vSCK メモリ液晶のSCK端子に出力するピンを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 186 * @param vSI メモリ液晶のSI端子に出力するピンをを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 187 * @param vCS メモリ液晶のSCS端子に出力するピンをを管理するDigitalOutポインタを指定
Yajirushi 0:8512c64be557 188 *
Yajirushi 0:8512c64be557 189 * Example:
Yajirushi 0:8512c64be557 190 * @code
Yajirushi 0:8512c64be557 191 * #include "mbed.h"
Yajirushi 0:8512c64be557 192 * #include "SH_MLCD_J.h"
Yajirushi 0:8512c64be557 193 *
Yajirushi 0:8512c64be557 194 * DigitalOut sck(p26);
Yajirushi 0:8512c64be557 195 * DigitalOut si(p25);
Yajirushi 0:8512c64be557 196 * DigitalOut cs(p24);
Yajirushi 0:8512c64be557 197 *
Yajirushi 0:8512c64be557 198 * int main(){
Yajirushi 0:8512c64be557 199 * SHMLCD_J mlcd(&sck, &si, &cs); //<- 先に宣言したものを&(アドレス)で渡す
Yajirushi 0:8512c64be557 200 * mlcd.init(400, 240);
Yajirushi 0:8512c64be557 201 * mlcd.pixel(50, 50);
Yajirushi 0:8512c64be557 202 * }
Yajirushi 0:8512c64be557 203 * @endcode
Yajirushi 0:8512c64be557 204 */
Yajirushi 0:8512c64be557 205 SHMLCD_J(DigitalOut *vSCK, DigitalOut *vSI, DigitalOut *vCS);
Yajirushi 0:8512c64be557 206
Yajirushi 0:8512c64be557 207 /** デストラクタ:内部配列と使用した変数を削除します(ユーザーが呼ぶ必要はありません)
Yajirushi 0:8512c64be557 208 */
Yajirushi 0:8512c64be557 209 ~SHMLCD_J();
Yajirushi 0:8512c64be557 210
Yajirushi 0:8512c64be557 211 private:
Yajirushi 0:8512c64be557 212 //ディスプレイの幅、高さ
Yajirushi 0:8512c64be557 213 unsigned short _width, _height;
Yajirushi 0:8512c64be557 214
Yajirushi 0:8512c64be557 215 //一行のデータ量(_width / 8)
Yajirushi 0:8512c64be557 216 unsigned char _bytes;
Yajirushi 0:8512c64be557 217
Yajirushi 0:8512c64be557 218 //画素状態記憶用配列
Yajirushi 0:8512c64be557 219 //最大12KByte(400 / 8 * 240 = 12,000)
Yajirushi 0:8512c64be557 220 char *R;
Yajirushi 0:8512c64be557 221
Yajirushi 0:8512c64be557 222 //通信に使用するピン(SPIモドキ)
Yajirushi 0:8512c64be557 223 DigitalOut *pinSCK, *pinSI, *pinSCS;
Yajirushi 0:8512c64be557 224
Yajirushi 0:8512c64be557 225 //外部信号用ピン
Yajirushi 0:8512c64be557 226 DigitalOut *pinCOM, *pinDISP;
Yajirushi 0:8512c64be557 227 bool useEcom, useEdisp;
Yajirushi 0:8512c64be557 228
Yajirushi 0:8512c64be557 229 //COM信号状態
Yajirushi 0:8512c64be557 230 bool comFlag;
Yajirushi 0:8512c64be557 231
Yajirushi 0:8512c64be557 232 //COM信号用タイマー
Yajirushi 0:8512c64be557 233 Ticker comT;
Yajirushi 0:8512c64be557 234
Yajirushi 0:8512c64be557 235 //命令送信フラグ
Yajirushi 0:8512c64be557 236 bool busySPI;
Yajirushi 0:8512c64be557 237
Yajirushi 0:8512c64be557 238 //SPIモドキのコマンド送出
Yajirushi 0:8512c64be557 239 void send_mode(unsigned char val);
Yajirushi 0:8512c64be557 240 void send_addr(unsigned char val);
Yajirushi 0:8512c64be557 241 void send_data(unsigned char val);
Yajirushi 0:8512c64be557 242
Yajirushi 0:8512c64be557 243 public:
Yajirushi 0:8512c64be557 244 /** 初期化:使用する配列や端子の状態を初期化します
Yajirushi 0:8512c64be557 245 * @warning インスタンス1つにつき1回しか呼ばないこと
Yajirushi 0:8512c64be557 246 *
Yajirushi 0:8512c64be557 247 * @param dispWidth メモリ液晶の表示幅をピクセルで指定する
Yajirushi 0:8512c64be557 248 * @param dispHeight メモリ液晶の表示高さをピクセル指定する
Yajirushi 0:8512c64be557 249 *
Yajirushi 0:8512c64be557 250 * @retval true 初期化に成功した
Yajirushi 0:8512c64be557 251 * @retval false 初期化に失敗した(表示幅や高さが間違っている等)
Yajirushi 0:8512c64be557 252 */
Yajirushi 0:8512c64be557 253 bool init(unsigned short dispWidth, unsigned short dispHeight);
Yajirushi 0:8512c64be557 254
Yajirushi 0:8512c64be557 255 /** 初期化時に指定した表示ピクセル幅を返す
Yajirushi 0:8512c64be557 256 *
Yajirushi 0:8512c64be557 257 * @returns 初期化時に指定した表示ピクセル幅
Yajirushi 0:8512c64be557 258 */
Yajirushi 0:8512c64be557 259 unsigned short getWidth();
Yajirushi 0:8512c64be557 260
Yajirushi 0:8512c64be557 261 /** 初期化時に指定した表示ピクセル高さを返す
Yajirushi 0:8512c64be557 262 *
Yajirushi 0:8512c64be557 263 * @returns 初期化時に指定した表示ピクセル高さ
Yajirushi 0:8512c64be557 264 */
Yajirushi 0:8512c64be557 265 unsigned short getHeight();
Yajirushi 0:8512c64be557 266
Yajirushi 0:8512c64be557 267 /** 液晶の表示をクリアする:内部画素記憶配列はクリアされない
Yajirushi 0:8512c64be557 268 */
Yajirushi 0:8512c64be557 269 void clear();
Yajirushi 0:8512c64be557 270
Yajirushi 0:8512c64be557 271 /** 液晶の表示をクリアする:内部画素記憶配列はクリアされない(clear()のエイリアス)
Yajirushi 0:8512c64be557 272 */
Yajirushi 0:8512c64be557 273 void cls();
Yajirushi 0:8512c64be557 274
Yajirushi 0:8512c64be557 275 /** 内部画素記憶配列をクリアする:表示はクリアされない
Yajirushi 0:8512c64be557 276 */
Yajirushi 0:8512c64be557 277 void clearArray();
Yajirushi 0:8512c64be557 278
Yajirushi 0:8512c64be557 279 /** 内部画素記憶配列をクリアする:表示はクリアされない(clearArray()のエイリアス)
Yajirushi 0:8512c64be557 280 */
Yajirushi 0:8512c64be557 281 void cla();
Yajirushi 0:8512c64be557 282
Yajirushi 0:8512c64be557 283 /** DISP端子をONにする:外部DISP信号を使用しない場合は何も起きない
Yajirushi 0:8512c64be557 284 */
Yajirushi 0:8512c64be557 285 void dispON();
Yajirushi 0:8512c64be557 286
Yajirushi 0:8512c64be557 287 /** DISP端子をOFFにする:外部DISP信号を使用しない場合は何も起きない
Yajirushi 0:8512c64be557 288 */
Yajirushi 0:8512c64be557 289 void dispOFF();
Yajirushi 0:8512c64be557 290
Yajirushi 0:8512c64be557 291 /** 液晶寿命を延ばすためにCOM信号を反転させる
Yajirushi 0:8512c64be557 292 *
Yajirushi 0:8512c64be557 293 * initの中で自動的にタイマーに登録されるので、ほとんどの場合は呼ぶ必要がない
Yajirushi 0:8512c64be557 294 */
Yajirushi 0:8512c64be557 295 void invertCOM();
Yajirushi 0:8512c64be557 296
Yajirushi 0:8512c64be557 297 /** 液晶寿命を延ばすためのCOM信号反転をタイマーに登録して自動的に行う
Yajirushi 0:8512c64be557 298 *
Yajirushi 0:8512c64be557 299 * initの中で自動的に呼ばれるので、ほとんどの場合は呼ぶ必要がない
Yajirushi 0:8512c64be557 300 *
Yajirushi 0:8512c64be557 301 * @param tickTime COM信号反転間隔(秒)
Yajirushi 0:8512c64be557 302 */
Yajirushi 0:8512c64be557 303 void regCOMTimer(float tickTime=0.25);
Yajirushi 0:8512c64be557 304
Yajirushi 0:8512c64be557 305 /** 液晶寿命を延ばすためのCOM信号反転のタイマーを解除する
Yajirushi 0:8512c64be557 306 */
Yajirushi 0:8512c64be557 307 void deregCOMTimer();
Yajirushi 0:8512c64be557 308
Yajirushi 0:8512c64be557 309 /** 内部画素記憶配列の特定の行にデータを上書きする
Yajirushi 0:8512c64be557 310 *
Yajirushi 0:8512c64be557 311 * @param ln 上書きする行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 312 * @param data 上書きするデータ
Yajirushi 0:8512c64be557 313 */
Yajirushi 0:8512c64be557 314 void updateArray1(unsigned char ln, const char *data);
Yajirushi 0:8512c64be557 315
Yajirushi 0:8512c64be557 316 /** 内部画素記憶配列の特定の範囲にデータを上書きする
Yajirushi 0:8512c64be557 317 *
Yajirushi 0:8512c64be557 318 * @param sn 上書きを開始する行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 319 * @param en 上書きが終了する行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 320 * @param data 上書きするデータ
Yajirushi 0:8512c64be557 321 */
Yajirushi 0:8512c64be557 322 void updateArrayN(unsigned char sn, unsigned char en, const char *data);
Yajirushi 0:8512c64be557 323
Yajirushi 0:8512c64be557 324 /** 内部画素記憶配列を全て上書きする
Yajirushi 0:8512c64be557 325 *
Yajirushi 0:8512c64be557 326 * @param data 上書きするデータ
Yajirushi 0:8512c64be557 327 */
Yajirushi 0:8512c64be557 328 void updateArrayA(const char *data);
Yajirushi 0:8512c64be557 329
Yajirushi 0:8512c64be557 330 /** 内部画素記憶配列の特定の行をメモリ液晶に表示する
Yajirushi 0:8512c64be557 331 *
Yajirushi 0:8512c64be557 332 * @param ln 表示する行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 333 */
Yajirushi 0:8512c64be557 334 void writeArray1(unsigned char ln);
Yajirushi 0:8512c64be557 335
Yajirushi 0:8512c64be557 336 /** 内部画素記憶配列の特定の範囲をメモリ液晶に表示する
Yajirushi 0:8512c64be557 337 *
Yajirushi 0:8512c64be557 338 * @param sn 表示したい範囲の開始行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 339 * @param sn 表示したい範囲の終了行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 340 */
Yajirushi 0:8512c64be557 341 void writeArrayN(unsigned char sn, unsigned char en);
Yajirushi 0:8512c64be557 342
Yajirushi 0:8512c64be557 343 /** 内部画素記憶配列を全てメモリ液晶に表示する
Yajirushi 0:8512c64be557 344 */
Yajirushi 0:8512c64be557 345 void writeArrayA();
Yajirushi 0:8512c64be557 346
Yajirushi 0:8512c64be557 347 /** データをメモリ液晶の特定行に表示する(内部画素記憶配列を介さない)
Yajirushi 0:8512c64be557 348 *
Yajirushi 0:8512c64be557 349 * @param ln 表示する行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 350 * @param data 表示するデータ
Yajirushi 0:8512c64be557 351 */
Yajirushi 0:8512c64be557 352 void write1(unsigned char ln, const char *data);
Yajirushi 0:8512c64be557 353
Yajirushi 0:8512c64be557 354 /** データをメモリ液晶の特定の範囲に表示する(内部画素記憶配列を介さない)
Yajirushi 0:8512c64be557 355 *
Yajirushi 0:8512c64be557 356 * @param sn 表示したい範囲の開始行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 357 * @param en 表示したい範囲の終了行(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 358 * @param data 表示するデータ
Yajirushi 0:8512c64be557 359 */
Yajirushi 0:8512c64be557 360 void writeN(unsigned char sn, unsigned char en, const char *data);
Yajirushi 0:8512c64be557 361
Yajirushi 0:8512c64be557 362 /** データをメモリ液晶全域に表示する(内部画素記憶配列を介さない)
Yajirushi 0:8512c64be557 363 *
Yajirushi 0:8512c64be557 364 * @param data 表示するデータ
Yajirushi 0:8512c64be557 365 */
Yajirushi 0:8512c64be557 366 void writeA(const char *data);
Yajirushi 0:8512c64be557 367
Yajirushi 0:8512c64be557 368 /** メモリ液晶の特定の座標に1ピクセルのドットを表示する
Yajirushi 0:8512c64be557 369 *
Yajirushi 0:8512c64be557 370 * @param x X座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 371 * @param y Y座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 372 * @param mode 表示モード
Yajirushi 0:8512c64be557 373 *
Yajirushi 0:8512c64be557 374 * @note modeの一覧:
Yajirushi 0:8512c64be557 375 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 376 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 377 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 378 *
Yajirushi 0:8512c64be557 379 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 380 */
Yajirushi 0:8512c64be557 381 void pixel(unsigned short x, unsigned short y, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 382
Yajirushi 0:8512c64be557 383 /** メモリ液晶に線を表示する
Yajirushi 0:8512c64be557 384 *
Yajirushi 0:8512c64be557 385 * @param fromX 始点のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 386 * @param fromY 始点のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 387 * @param toX 終点のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 388 * @param toY 終点のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 389 * @param mode 表示モード
Yajirushi 0:8512c64be557 390 *
Yajirushi 0:8512c64be557 391 * @note modeの一覧:
Yajirushi 0:8512c64be557 392 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 393 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 394 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 395 *
Yajirushi 0:8512c64be557 396 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 397 */
Yajirushi 0:8512c64be557 398 void drawLine(unsigned short fromX, unsigned short fromY, unsigned short toX, unsigned short toY, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 399
Yajirushi 0:8512c64be557 400 /** メモリ液晶に四角形を表示する
Yajirushi 0:8512c64be557 401 *
Yajirushi 0:8512c64be557 402 * @param left 画面左端からの距離(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 403 * @param top 画面上端からの距離(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 404 * @param width 四角形の幅
Yajirushi 0:8512c64be557 405 * @param height 四角形の高さ
Yajirushi 0:8512c64be557 406 * @param mode 表示モード
Yajirushi 0:8512c64be557 407 *
Yajirushi 0:8512c64be557 408 * @note modeの一覧:
Yajirushi 0:8512c64be557 409 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 410 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 411 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 412 *
Yajirushi 0:8512c64be557 413 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 414 */
Yajirushi 0:8512c64be557 415 void drawRect(unsigned short left, unsigned short top, unsigned short width, unsigned short height, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 416
Yajirushi 0:8512c64be557 417 /** メモリ液晶に四角形を表示する(対角点指定)
Yajirushi 0:8512c64be557 418 *
Yajirushi 0:8512c64be557 419 * @param x1 四角形の左上の点のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 420 * @param y1 四角形の左上の点のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 421 * @param x2 四角形の右下の点のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 422 * @param y2 四角形の右下の点のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 423 * @param mode 表示モード
Yajirushi 0:8512c64be557 424 *
Yajirushi 0:8512c64be557 425 * @note modeの一覧:
Yajirushi 0:8512c64be557 426 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 427 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 428 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 429 *
Yajirushi 0:8512c64be557 430 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 431 */
Yajirushi 0:8512c64be557 432 void drawRect2(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 433
Yajirushi 0:8512c64be557 434 /** メモリ液晶に塗りつぶされた四角形を表示する
Yajirushi 0:8512c64be557 435 *
Yajirushi 0:8512c64be557 436 * @param left 画面左端からの距離(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 437 * @param top 画面上端からの距離(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 438 * @param width 四角形の幅
Yajirushi 0:8512c64be557 439 * @param height 四角形の高さ
Yajirushi 0:8512c64be557 440 * @param mode 表示モード
Yajirushi 0:8512c64be557 441 *
Yajirushi 0:8512c64be557 442 * @note modeの一覧:
Yajirushi 0:8512c64be557 443 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 444 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 445 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 446 *
Yajirushi 0:8512c64be557 447 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 448 */
Yajirushi 0:8512c64be557 449 void fillRect(unsigned short left, unsigned short top, unsigned short width, unsigned short height, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 450
Yajirushi 0:8512c64be557 451 /** メモリ液晶に塗りつぶされた四角形を表示する(対角点指定)
Yajirushi 0:8512c64be557 452 *
Yajirushi 0:8512c64be557 453 * @param x1 四角形の左上の点のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 454 * @param y1 四角形の左上の点のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 455 * @param x2 四角形の右下の点のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 456 * @param y2 四角形の右下の点のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 457 * @param mode 表示モード
Yajirushi 0:8512c64be557 458 *
Yajirushi 0:8512c64be557 459 * @note modeの一覧:
Yajirushi 0:8512c64be557 460 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 461 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 462 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 463 *
Yajirushi 0:8512c64be557 464 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 465 */
Yajirushi 0:8512c64be557 466 void fill2Point(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 467
Yajirushi 0:8512c64be557 468 /** メモリ液晶に円を表示する
Yajirushi 0:8512c64be557 469 *
Yajirushi 0:8512c64be557 470 * @param centerX 円の中心のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 471 * @param centerY 円の中心のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 472 * @param r 円の半径
Yajirushi 0:8512c64be557 473 * @param mode 表示モード
Yajirushi 0:8512c64be557 474 *
Yajirushi 0:8512c64be557 475 * @note modeの一覧:
Yajirushi 0:8512c64be557 476 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 477 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 478 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 479 *
Yajirushi 0:8512c64be557 480 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 481 */
Yajirushi 0:8512c64be557 482 void drawCircle(unsigned short centerX, unsigned short centerY, unsigned short r, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 483
Yajirushi 0:8512c64be557 484 /** メモリ液晶に塗りつぶされた円を表示する
Yajirushi 0:8512c64be557 485 *
Yajirushi 0:8512c64be557 486 * @param centerX 円の中心のX座標(0 から 幅-1 まで)
Yajirushi 0:8512c64be557 487 * @param centerY 円の中心のY座標(0 から 高さ-1 まで)
Yajirushi 0:8512c64be557 488 * @param r 円の半径
Yajirushi 0:8512c64be557 489 * @param mode 表示モード
Yajirushi 0:8512c64be557 490 *
Yajirushi 0:8512c64be557 491 * @note modeの一覧:
Yajirushi 0:8512c64be557 492 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 493 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 494 * SHMLCD_J_INVERT (-1): fillCircleは描画方法が特殊なためうまく描画できません
Yajirushi 0:8512c64be557 495 *
Yajirushi 0:8512c64be557 496 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 497 */
Yajirushi 0:8512c64be557 498 void fillCircle(unsigned short centerX, unsigned short centerY, unsigned short r, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 499
Yajirushi 0:8512c64be557 500 /** メモリ液晶に文字を表示する
Yajirushi 0:8512c64be557 501 *
Yajirushi 0:8512c64be557 502 * @param s 表示する文字
Yajirushi 0:8512c64be557 503 * @param x テキストを囲う四角形の左上のX座標
Yajirushi 0:8512c64be557 504 * @param y テキストを囲う四角形の左上のY座標
Yajirushi 0:8512c64be557 505 * @param zoom 拡大倍率
Yajirushi 0:8512c64be557 506 * @param mode 表示モード
Yajirushi 0:8512c64be557 507 *
Yajirushi 0:8512c64be557 508 * @note modeの一覧:
Yajirushi 0:8512c64be557 509 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 510 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 511 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 512 *
Yajirushi 0:8512c64be557 513 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 514 *
Yajirushi 0:8512c64be557 515 * @retval -1 表示できなかった
Yajirushi 0:8512c64be557 516 * @retval 0以上 文字のバイトサイズ
Yajirushi 0:8512c64be557 517 */
Yajirushi 0:8512c64be557 518 signed char drawChar(const char *s, unsigned short x, unsigned short y, unsigned char zoom, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 519
Yajirushi 0:8512c64be557 520 /** メモリ液晶に文字列を表示する
Yajirushi 0:8512c64be557 521 *
Yajirushi 0:8512c64be557 522 * @param str 表示する文字列
Yajirushi 0:8512c64be557 523 * @param x テキストを囲う四角形の左上のX座標
Yajirushi 0:8512c64be557 524 * @param y テキストを囲う四角形の左上のY座標
Yajirushi 0:8512c64be557 525 * @param zoom 拡大倍率
Yajirushi 0:8512c64be557 526 * @param mode 表示モード
Yajirushi 0:8512c64be557 527 *
Yajirushi 0:8512c64be557 528 * @note modeの一覧:
Yajirushi 0:8512c64be557 529 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 530 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 531 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 532 *
Yajirushi 0:8512c64be557 533 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 534 *
Yajirushi 0:8512c64be557 535 * @retval -1 表示できなかった
Yajirushi 0:8512c64be557 536 * @retval 1 表示できた
Yajirushi 0:8512c64be557 537 */
Yajirushi 0:8512c64be557 538 signed char writeString(const char *str, unsigned short x, unsigned short y, unsigned char zoom, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 539
Yajirushi 0:8512c64be557 540 /** メモリ液晶に文字列を表示する
Yajirushi 0:8512c64be557 541 *
Yajirushi 0:8512c64be557 542 * @param str 表示する文字列
Yajirushi 0:8512c64be557 543 * @param x テキストを囲う四角形の左上のX座標
Yajirushi 0:8512c64be557 544 * @param y テキストを囲う四角形の左上のY座標
Yajirushi 0:8512c64be557 545 * @param mode 表示モード
Yajirushi 0:8512c64be557 546 *
Yajirushi 0:8512c64be557 547 * @note modeの一覧:
Yajirushi 0:8512c64be557 548 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 549 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 550 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 551 *
Yajirushi 0:8512c64be557 552 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 553 *
Yajirushi 0:8512c64be557 554 * @retval -1 表示できなかった
Yajirushi 0:8512c64be557 555 * @retval 1 表示できた
Yajirushi 0:8512c64be557 556 */
Yajirushi 0:8512c64be557 557 signed char writeString(const char *str, unsigned short x, unsigned short y, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 558
Yajirushi 0:8512c64be557 559 /** メモリ液晶に文字列を表示する(writeStringのエイリアス)
Yajirushi 0:8512c64be557 560 *
Yajirushi 0:8512c64be557 561 * @param str 表示する文字列
Yajirushi 0:8512c64be557 562 * @param x テキストを囲う四角形の左上のX座標
Yajirushi 0:8512c64be557 563 * @param y テキストを囲う四角形の左上のY座標
Yajirushi 0:8512c64be557 564 * @param zoom 拡大倍率
Yajirushi 0:8512c64be557 565 * @param mode 表示モード
Yajirushi 0:8512c64be557 566 *
Yajirushi 0:8512c64be557 567 * @note modeの一覧:
Yajirushi 0:8512c64be557 568 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 569 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 570 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 571 *
Yajirushi 0:8512c64be557 572 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 573 *
Yajirushi 0:8512c64be557 574 * @retval -1 表示できなかった
Yajirushi 0:8512c64be557 575 * @retval 1 表示できた
Yajirushi 0:8512c64be557 576 */
Yajirushi 0:8512c64be557 577 signed char ws(const char *str, unsigned short x, unsigned short y, unsigned char zoom, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 578
Yajirushi 0:8512c64be557 579 /** メモリ液晶に文字列を表示する(writeStringのエイリアス)
Yajirushi 0:8512c64be557 580 *
Yajirushi 0:8512c64be557 581 * @param str 表示する文字列
Yajirushi 0:8512c64be557 582 * @param x テキストを囲う四角形の左上のX座標
Yajirushi 0:8512c64be557 583 * @param y テキストを囲う四角形の左上のY座標
Yajirushi 0:8512c64be557 584 * @param mode 表示モード
Yajirushi 0:8512c64be557 585 *
Yajirushi 0:8512c64be557 586 * @note modeの一覧:
Yajirushi 0:8512c64be557 587 * SHMLCD_J_BLACK (0): 黒く表示する
Yajirushi 0:8512c64be557 588 * SHMLCD_J_ERASE (1): 白く表示する
Yajirushi 0:8512c64be557 589 * SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
Yajirushi 0:8512c64be557 590 *
Yajirushi 0:8512c64be557 591 * @param immidiate 即時描画させる
Yajirushi 0:8512c64be557 592 *
Yajirushi 0:8512c64be557 593 * @retval -1 表示できなかった
Yajirushi 0:8512c64be557 594 * @retval 1 表示できた
Yajirushi 0:8512c64be557 595 */
Yajirushi 0:8512c64be557 596 signed char ws(const char *str, unsigned short x, unsigned short y, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
Yajirushi 0:8512c64be557 597 };
Yajirushi 0:8512c64be557 598
Yajirushi 0:8512c64be557 599 #endif