lcd160cr
--- LCD160CR ディスプレイの制御¶
"このモジュールは、Pyboard 用 LCD160CR ディスプレイの制御を担います。
詳しくは次のリンク先を参照してください:
LCD160CRv1.0 リファレンスマニュアル (100KiB PDF)
LCD160CRv1.0 回路図 (1.6MiB PDF)
クラス LCD160CR¶
LCD160CR クラスはディスプレイへのインターフェースを提供します。このクラスのインスタンスを作成することで、そのメソッドを使って LCD に描画したり、タッチパネルの状態を取得したりできます。
たとえば次のように使います:
import lcd160cr
lcd = lcd160cr.LCD160CR('X')
lcd.set_orient(lcd160cr.PORTRAIT)
lcd.set_pos(0, 0)
lcd.set_text_color(lcd.rgb(255, 0, 0), lcd.rgb(0, 0, 0))
lcd.set_font(1)
lcd.write('Hello MicroPython!')
print('touch:', lcd.get_touch())
コンストラクタ¶
- class lcd160cr.LCD160CR(connect=None, *, pwr=None, i2c=None, spi=None, i2c_addr=98)¶
LCD160CR オブジェクトを構築します。パラメータは次のとおりです:
connect は、LCD ディスプレイをボードに取り付ける位置指定する文字列です。有効な値は "X", "Y", "XY", "YX" のいずれかです。"X" は、ディスプレイをXスキンの位置に取り付ける場合、"Y" はYスキンの位置に取り付ける場合に指定します。"XY" と "YX" は、それぞれディスプレイが pyboard の右側または左側に取り付ける場合に指定します。
pwr は LCD の電源/有効化ピンに接続された Pin オブジェクトです。
i2c は LCD の I2C インタフェースに接続された I2C オブジェクトです。
spi は LCD の SPI インタフェースに接続された SPI オブジェクトです。
i2c_addr はディスプレイの I2C アドレスです。
有効な connect を指定するか、 pwr, i2c, spi のすべてを指定する必要があります。有効な connect が指定された場合、パラメータとして渡されない pwr, i2c, spi は connect の値に基づいて作成されます(つまり
None
)。これにより、必要に応じてディスプレイへのデフォルトインタフェースをオーバーライドできます。デフォルト値は次のとおりです:
"X" はXスキン用であり、次のようになります:
pwr=Pin("X4"), i2c=I2C("X"), spi=SPI("X")
"Y" はYスキン用であり、次のようになります:
pwr=Pin("Y4"), i2c=I2C("Y"), spi=SPI("Y")
"XY" は右側用であり、次のようになります:
pwr=Pin("X4"), i2c=I2C("Y"), spi=SPI("X")
"YX" は左側用であり、次のようになります:
pwr=Pin("Y4"), i2c=I2C("X"), spi=SPI("Y")
pyboard へのディスプレイの取り付け方法については、 この画像 を参照してください。
静的メソッド¶
- static LCD160CR.rgb(r, g, b)¶
指定した RGB カラー値を表す16ビット整数を返します。16ビットの値はフォントの色の設定(
LCD160CR.set_text_color()
を参照)、ペンの色の設定(LCD160CR.set_pen()
を参照)、個々のピクセルの描画に使えます。
- LCD160CR.clip_line(data, w, h):
指定したラインデータをクリップします。これは内部使用のためのものです。
インスタンスメンバー¶
次のインスタンスメンバーが公開されています。
- LCD160CR.w¶
- LCD160CR.h¶
ディスプレイの幅と高さを示すピクセル数です。これらのメンバーは
LCD160CR.set_orient()
を呼び出すと更新され、読み取り専用として考える必要があります。
設定コマンド¶
- LCD160CR.set_power(on)¶
on の値に応じて、ディスプレイをオンまたはオフにします。0 または
False
はディスプレイをオフにし、1 またはTrue
はオンにします。
- LCD160CR.set_orient(orient)¶
ディスプレイの向きを設定します。 orient パラメータに指定できるのは
PORTRAIT
,LANDSCAPE
,PORTRAIT_UPSIDEDOWN
,LANDSCAPE_UPSIDEDOWN
のいずれかです。
- LCD160CR.set_brightness(value)¶
ディスプレイの明るさを0から31の間で設定します。
- LCD160CR.set_i2c_addr(addr)¶
ディスプレイの I2C アドレスを設定します。 addr の値は下位2ビットがクリアされている必要があります。
- LCD160CR.set_uart_baudrate(baudrate)¶
UART インタフェースのボーレートを設定します。
- LCD160CR.set_startup_deco(value)¶
ディスプレイの起動時の装飾を設定します。 value パラメータは
STARTUP_DECO_NONE
,STARTUP_DECO_MLOGO
,STARTUP_DECO_INFO
の論理和とすることができます。
- LCD160CR.save_to_flash()¶
初期の装飾、向き、明るさ、UART のボーレート、I2C アドレスをフラッシュに保存し、再起動や電源オン時に戻します。
ピクセルにアクセスするメソッド¶
次のメソッドは、ディスプレイ上の個々のピクセルを操作します。
- LCD160CR.set_pixel(x, y, c)¶
指定のピクセルを与えた色に設定します。色は16ビットの整数である必要があり、
LCD160CR.rgb()
で作成できます。
- LCD160CR.get_pixel(x, y)¶
指定のピクセルの16ビット値を取得します。
- LCD160CR.get_line(x, y, buf)¶
指定したバッファにピクセルのラインを取得するための低レベルメソッドです。n 個のピクセルを読み取るには、 buf の長さが 2*n+1 バイトである必要があります。最初のバイトはダミーバイトであり、無視されるべきであり、その後のバイトは、座標 (x, y) から始まる行のピクセルを表します。
- LCD160CR.screen_dump(buf, x=0, y=0, w=None, h=None)¶
画面の内容を指定したバッファにダンプします。パラメータ x と y は開始座標を指定し、 w と h は領域のサイズを指定します。 w または h が
None
の場合、それらは、与えられた x と y の値から取得された画面のサイズから最大値を取ります。 buf は2*w*h
バイトを保持できる大きさである必要があります。それより小さい場合、開始座標から格納できる分だけの水平ラインが格納されます。
- LCD160CR.screen_load(buf)¶
指定されたバッファから画面全体をロードします。
テキストの描画¶
テキストを描画するには、位置、色、フォントを設定し、次に LCD160CR.write
を使ってテキストを描画します。
- LCD160CR.set_pos(x, y)¶
LCD160CR.write()
によるテキストの出力の位置を設定します。設定する位置はテキストの左上隅になります。
- LCD160CR.set_text_color(fg, bg)¶
テキストの前景色と背景色を設定します。
- LCD160CR.set_font(font, scale=0, bold=0, trans=0, scroll=0)¶
テキストのフォントを設定します。これ以降の
write
の呼出しでは、新しく設定したフォントが適用されます。パラメータは次の通りです:font は適用するフォントファミリーで、有効な値は 0, 1, 2, 3 です。
scale は各文字のピクセルスケーリング値で、ピクセルが scale + 1 の辺となる正方形として描画されます。値は 0 から 63 の間です。
bold は 各文字のピクセルをオーバードローするピクセル数を制御し、太字の効果を作ります。 bold の下位2ビットは水平方向にオーバードローするピクセル数であり、次の2ビットは垂直方向です。たとえば bold の値が5の場合、水平方向と垂直方向の両方で1ピクセルがオーバードローされます。
trans は 0 または 1 であり、1 に設定すると文字が透明な背景で描画されます。
scroll は 0 または 1 であり、1 に設定するとテキストが次の行に移動するときにディスプレイがソフトスクロールを行います。
- LCD160CR.write(s)¶
現在の位置、色、フォントを適用してディスプレイにテキストを書き出します。テキストを書き出すと、位置が自動的に増分されます。ディスプレイは改行やバックスペースなどの基本的な VT100 制御コードをサポートしています。
基本図形の描画¶
基本的な描画コマンドは set_pen
メソッドで設定された前景色と背景色を使います。
- LCD160CR.set_pen(line, fill)¶
基本描画のための線(line)と塗りつぶし(fill)の色を設定します。
- LCD160CR.erase()¶
表示全体をペンの塗りつぶし色で消去します。
- LCD160CR.dot(x, y)¶
指定した位置に、ペンの線の色を使って単一のピクセルを描画します。
- LCD160CR.rect(x, y, w, h)¶
- LCD160CR.rect_outline(x, y, w, h)¶
- LCD160CR.rect_interior(x, y, w, h)¶
指定の位置とサイズで矩形を描画し、枠線にペンの線の色、内部にペンの塗りつぶし色を適用します。
rect
メソッドは枠線と内部を描画しますが、他のメソッドは枠線か内部のどちらか一方を描画します。
- LCD160CR.line(x1, y1, x2, y2)¶
指定した2つの座標間にペンの線の色を使って線を描画します。
- LCD160CR.dot_no_clip(x, y)¶
- LCD160CR.rect_no_clip(x, y, w, h)¶
- LCD160CR.rect_outline_no_clip(x, y, w, h)¶
- LCD160CR.rect_interior_no_clip(x, y, w, h)¶
- LCD160CR.line_no_clip(x1, y1, x2, y2)¶
これらのメソッドは上記のようになりますが、入力座標にクリッピングを行いません。クリッピングバージョンよりも高速であり、座標が表示領域内にあることがわかっている場合に使えます。
- LCD160CR.poly_dot(data)¶
ペンの線の色を適用して点のシーケンスを描画します。データはバイトのバッファである必要があり、連続する2つのバイトが座標ペア (x, y) に対応しています。
- LCD160CR.poly_line(data)¶
LCD160CR.poly_dot()
に類似していますが、点の間に線を描画します。
タッチ画面メソッド¶
- LCD160CR.touch_config(calib=False, save=False, irq=None)¶
タッチパネルを設定します:
calib が
True
の場合、この呼出しは抵抗膜方式タッチセンサーのタッチキャリブレーションを起動します。これにより、ユーザーは画面のさまざまな部分にタッチする必要があります。save が
True
の場合、タッチパラメータはリセット/電源オン時に保持されるように NVRAM に保存されます。irq が
True
の場合、タッチフォースが検出されるとディスプレイが IRQ ラインを low にpull(pull)ように構成されます。 irq がFalse
の場合、この機能は無効になります。 irq がNone
(デフォルト値)の場合、この設定は変更されません。
- LCD160CR.is_touched()¶
ブール値を返します: 画面に現在タッチフォースがある場合は
True
、それ以外の場合はFalse
。
- LCD160CR.get_touch()¶
3項目のタプルを返します: (active, x, y) 。画面にタッチフォースがある場合、 active は 1 になり、それ以外の場合は 0 になります。 x と y の値は、現在または直近のタッチの位置を示します。
高度なコマンド¶
- LCD160CR.set_spi_win(x, y, w, h)¶
SPI データが書き込まれるウィンドウを設定します。
- LCD160CR.fast_spi(flush=True)¶
SPI バス上で RGB ピクセルデータを受け入れるようにディスプレイを準備し、
LCD160CR.set_spi_win()
で設定されたウィンドウの左上隅に最初のバイトが送られるよう位置をリセットします。このメソッドは SPI オブジェクトを返しますが、これを使ってピクセルデータを書き出せます。ピクセルは16ビットの RGB 値として送信され、5-6-5 形式である必要があります。データが送信されると、送信先カウンタが増加し、データは任意のサイズのチャンクで送信できます。送信先カウンタが
LCD160CR.set_spi_win()
で指定されたウィンドウの終わりに達すると、そのウィンドウの左上隅にラップアラウンドします。
- LCD160CR.show_framebuf(buf)¶
指定したバッファをディスプレイに表示します。 buf はピクセルの16ビットRGB値を含むバイト配列である必要があり、それらは
LCD160CR.set_spi_win()
で指定された領域に書き込まれ、左上隅から開始されます。フレームバッファを構築し、基本描画を提供するのに framebuf モジュールが使えます。フレームバッファを使用すると、画面に直接描画する場合と比べてアニメーションのパフォーマンスが向上します。
- LCD160CR.set_scroll(on)¶
スクロールをオンまたはオフにします。これは、ウィンドウ領域がスクロールされるかどうかをグローバルに制御します。
- LCD160CR.set_scroll_win(win, x=-1, y=0, w=0, h=0, vec=0, pat=0, fill=0x07e0, color=0)¶
スクロール用のウィンドウ領域を設定します:
win は設定するウィンドウIDです。一般的な用途には0から7までの標準ウィンドウがあります。ウィンドウ8はテキストスクロールウィンドウ(ティッカー)です。
x, y, w, h は、ウィンドウの表示内での位置を指定します。
vec はスクロールの方向と速度を指定します: これは
0bF.ddSSSSSSSSSSSS
という形式の16ビット値で、 dd は +x, +y, -x, -y のスクロールに対応する 0, 1, 2, 3 です。 F は速度形式を設定し、0 はウィンドウが1フレームごとに S % 256 ピクセルシフトされ、1 はウィンドウが S フレームごとに1ピクセルシフトされることを意味します。pat は背景の16ビットパターンマスクです。
fill は塗りつぶしの色です。
color は、テキストまたはパターンの前景色です。
- LCD160CR.set_scroll_win_param(win, param, value)¶
スクロールウィンドウ領域の単一のパラメータを設定します:
win はウィンドウIDで、0から8までです。
param は設定するパラメータ番号で、0から7までで、
set_scroll_win
メソッドのパラメータに対応します。value は設定する値です。
- LCD160CR.set_scroll_buf(s)¶
ウィンドウ 8 でのスクロール用の文字列を設定します。パラメータ s は、長さが32以下の文字列でなければなりません。
- LCD160CR.jpeg(buf)¶
JPEG を表示します。 buf には完全な JPEG データが含まれている必要があります。JPEGデータには EXIF 情報が含まれていてはなりません。次のエンコーディングがサポートされています: Baseline DCT, Huffman coding, 8 bits per sample, 3 color components, YCbCr4:2:2 。JPEG の原点は
LCD160CR.set_pos()
で設定します。
- LCD160CR.jpeg_start(total_len)¶
- LCD160CR.jpeg_data(buf)¶
複数のバッファに分割されたデータから JPEG を表示します。最初に
jpeg_start
で JPEG の合計バイト数を指定して開始する必要があります。次に、このバイト数のデータを1回以上のjpeg_data
コマンド呼出しでディスプレイに転送する必要があります。
- LCD160CR.feed_wdt()¶
このメソッドの最初の呼出しは、ディスプレイの内部ウォッチドッグタイマーを開始します。その後の呼出しでは、ウォッチドッグにデータを供給します。タイムアウトはおおよそ30秒です。
- LCD160CR.reset()¶
ディスプレイをリセットします。
定数¶
- lcd160cr.PORTRAIT¶
- lcd160cr.LANDSCAPE¶
- lcd160cr.PORTRAIT_UPSIDEDOWN¶
- lcd160cr.LANDSCAPE_UPSIDEDOWN¶
metg:
LCD160CR.set_orient
で使うディスプレイの向き。
- lcd160cr.STARTUP_DECO_NONE¶
- lcd160cr.STARTUP_DECO_MLOGO¶
- lcd160cr.STARTUP_DECO_INFO¶
LCD160CR.set_startup_deco()
で使う、起動時の装飾の種類。OR 演算子で組み合わせることができます。