LoginSignup
3
4

More than 5 years have passed since last update.

Adafruit 1.8" SPI display のライブラリを読む

Last updated at Posted at 2016-07-01

SPI 接続のLCDを使いたいので、ライブラリ Adafruit_ST7735 のソースコードを読んで使い方を調べてみました。

CからAPIを使いたい的な観点から調査しました。

まとめ

  • ライブラリはC++のクラスとして実装
  • Adafruit_ST7735クラスはAdafruit_GFXの派生クラスとなっており、ST7735特有の処理のみを実装している。
  • Adafruit_GFXから呼ばれるのは fillScreen(),drawPixel(),fillRect(),setRotation(), です。
  • LCDライブラリとしては、点、矩形の描画APIを用意すれば良い。
  • ビットマップ描画、斜め線の描画、フォント描画などは、点描画のAPIを使ってAdafruit_GFXで実装されている。
  • ST7735の描画コマンドは、矩形選択と色設定を使う。

調査対象

APIリスト

  • Adafruit_ST7735クラスはAdafruit_GFXの派生クラス
  • コンストラクタ
    • Adafruit_ST7735(int8_t CS, int8_t RS, int8_t SID, int8_t SCLK, int8_t RST = -1);
    • Adafruit_ST7735(int8_t CS, int8_t RS, int8_t RST = -1);
  • メソッド
    • initR(uint8_t options = INITR_GREENTAB), // for ST7735R
    • setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1),
    • pushColor(uint16_t color),
    • fillScreen(uint16_t color),
    • drawPixel(int16_t x, int16_t y, uint16_t color),
    • drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
    • drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
    • fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
    • setRotation(uint8_t r),
    • invertDisplay(boolean i);
    • uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);

以下で各APIの説明をする。

Adafruit_ST7735()

  • ピンの情報を設定してクラスを生成

initR()

  • 初期化用のコマンドをSPIで送信して初期化する。
  • optionsでLCDコントローラのタイプを指定可能。液晶保護シートに緑のタブが付いていたら、GREENTAB、黒のタブが付いていたらBLACKTABを指定する。

setAddrWindow()

  • x0, y0, x1, y1 で矩形を設定
  • ST7735_CASETコマンドとST7735_RASETで設定
  • Adafruit_GFXからは呼ばれない。

pushColor()

  • setAddrWindow()で指定した後で、その領域を色colorで描画
  • 色の値はColor565()で取得
  • Adafruit_GFXからは呼ばれない。

fillScreen()

  • 画面全体を色colorに描画
  • fillRectを呼んでいる。
void Adafruit_ST7735::fillScreen(uint16_t color) {
  fillRect(0, 0,  _width, _height, color);
}

drawFastVLine

  • 座標 x, y に高さh、色colorの線を描画
  • Adafruit_GFXからは呼ばれない。

drawFastHLine

  • 座標 x,y に幅w、色colorの線を描画
  • Adafruit_GFXからは呼ばれない。

fillRect

  • 座標x0, y0, x1, y1 で色colorの矩形領域を描画

setRotation

  • 画面を回転  0,1,2,3はそれぞれ0, 90, 180, 240度回転

invertDisplay

  • 画像を反転
  • Adafruit_GFXからは呼ばれない。

色の値

  • R, G, Bから16bitの色の値を取得

斜めの線を描画するメソッドdrawLine()、などその他のメソッドはAdafruit_GFXで定義されている。

参考

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4