12chアッテネータ2検討(製作編24)

製作編24

OLED表示パネルの操作仕様が理解できたので、デモ表示画面を作成します。

デモ表示画面

デモ表示画面と言っても、デモンストレーション表示をするわけではありません。装置が電源オンした後、装置安定待ち期間の間に型式とFWバージョンを数秒間表示させるだけです。この表示後に、通常画面を表示させます。表示量は16x2行分なので凝った事はできません。とりあえず以下の表示前提で検討してみます。

上記のデモ画面の2行目を表示させる為には、文字を書き込むDDRAMアドレスを事前に指定する必要があります。画面表示用のDDRAMアドレスは以下のとおりです。

2行目の先頭から文字を書き込むには、Set DDRAM addressコマンドを使ってアドレスポインターを事前に0x20に設定してからデータを書き込みます。

文字データの書き込みはwrite dataコマンドを使用します。こだわりは、この表示から通常画面への切り替えです。以前製作したDACユニットでは、スーっと表示が消えて切り替えていたので、同様な処理を検討してみました。

Set Contrast Controlコマンド

このコマンドを使って表示を消してみます。コマンド仕様は以下のとおりです。

デモ画面表示後、2秒のウェイト後にコントラスト値を下げていきます。コードはこんな感じです。

for (byte i = 0xC0 ; i > 0x08 ; i = i - 0x08) {

contrast_set(i);

}

 

void contrast_set(byte contrast) {

writeCommand(0x2a); //RE=1

writeCommand(0x79); //SD=1

writeCommand(0x81); //SetContrastControl command

writeCommand(contrast); //set contrast value

writeCommand(0x78); //SD=0

write(ommand(0x28); //RE=0

}

コントラスト値のステップをいくつか試してみましたが、想定どおりに表示が消えません。理由はコントラストを0にしても表示が消えない為です。Set Contrast Controlコマンドの使用はあきらめます。

Set Fade Out and Blinkingコマンド

私の要求に対してうってつけのコマンドがありました。仕様は以下のとおりです。

2バイト構成のコマンドで、最初に0x23を送信し、続いてFade Outを指定し、フェードアウトの各ステップのインターバル情報を送るだけです。さっそく試してみました。結論としては使い物になりませんでした。徐々に表示が暗くなりますが、あるところでいきなり表示が消えてしまいます。ミュート時の表示の為にBlinkingも試してみましたが、Fade Outの機能を使って処理がされているので、思いどおりの表示となりませんでした。やれやれ。

スクロールアウト

結局フェードアウト表示はあきらめて、以前製作したATT-1で採用したスクロールアウト仕様に変更します。使用するコマンドはCursor or Display Shiftコマンドです。

このコマンドは、表示用メモリ(DDRAM)を変更せずにこのコマンドの設定に従って表示を変更します。S/C=1, R/L=0としてコマンドを1回発信すると、表示が全体的に左に1列ずれます。ずらす前に左側1列に" "を書き込んでからシフトすると、右側からのスクロールインを防ぐ事ができます。表示用ソースはこんな感じです。

String st = " ";

for (int i =0 ; i < 15 ; i++) {

set_adrs(0x00 + i); //2重の括弧は正しく表示できないので削除

writeData(st.charAt(0));

set_adrs(0x20 + i); //2重の括弧は正しく表示できないので削除

writeData(st.charAt(0));

wirteCommand(0x18);

}

簡単に左スクロールアウトができました。通常画面の表示前に、ポインタを戻すためにinit_olde()コマンドを発信しておきます。

void int_oled() {

delay(100);

writeCommand(ClaerDisplay);

delay(20);

writeCommand(RetrunHome);

delay(2)

wirteCommand(DisplayOn);

delay(2);

wirteCommand(ClaerDisplay);

delay(20);

}

これでデモ表示画面が完成です。次回はリモコン機能の動作確認を行います。

 

つづく(製作編25)