ディスプレイ(OLED)

概要

本製品には前面部に有機ELディスプレイ(以下OLED)を搭載しています。ここではOLEDをレシピ言語から制御する方法を紹介します。

OLED機能の特徴

OLED機能の特徴を以下に示します。

OLED仕様

※OLEDは発光し続けると焼付きや寿命が早まる(暗くなる)等の性質があります。システムとして表示している内容を一定時間(10秒)で消灯する設計をしています。表示し続けたい場合は定期的に表示命令を呼ぶ事で点灯状態を維持することが可能ですが、点灯を継続することはOLEDの劣化を招きますので注意ください。


OLEDのシステムからの利用

本製品が起動時する際にOLEDの表示機能を利用しています。またボタンを押下した際にも時計や状態表示としてシステムからOLEDへの表示を行なっています。このためユーザ利用の際にはこのシステムからの表示との競合が起こりますので、意図した表示にする際には、システムからの表示タイミングを理解しておく必要があります。

[システムからの利用タイミング]

OLEDシステム利用

[ユーザ表示の強制表示]

デバッグ等でボタン押下でユーザ画面を表示したい場合に、システムからの利用タイミングにも強制的にユーザ画面を表示する機能も提供されています。
APIの第1引数に「実行権限」があり、ここに「OLC_CHAR_FORCE」を指定することにより強制的に描画を行います。強制的に描画する際には今ある画面に上書きをすることから、現在表示されている画面に書いた文字が重なる事になるので注意が必要です。

OLEDの強制書込

ボタン押下時に文字表示を行う場合にこの状態になりますので、この場合はスペースなどで空白文字で行末まで埋めて表示する必要があります。


OLEDの制御

OLEDのAPI

OLEDを制御するAPIは以下となります。

API 内容
1 OLC_DisplayPict() 時計画面/状態画面を表⽰する
2 OLC_DisplayChar() 指定した文字列を表示する
3 OLC_DisplayFree() 任意のピクセルを表示する

OLC_DiplayPict ()

OLEDに時計画面、または状態画面を表示するAPIになります。

OLC_DisplayPict(uint8 id);
   id : 画面の種類
        OLC_PICT_STATE  : 時計画面
        OLC_PICT_SET    : 状態画面

時計画面は電源起動時やボタンを1秒以下で押下した時に表示される画面です。
状態画面は時計画面が表示されている間にもう一回ボタンを押下すると切り換わるります。

画面のイメージは以下の通りです。

OLEDの表示画面

[コード例]
#incliude "olcAPI.h"
   
func any_func() {

    OLC_DisplayPict(OLC_PICT_STATE);

    return(0);
}

上記サンプルコードは時計画面を表示します。


OLC_DiplayChar ()

OLEDに文字を表示するAPIとなります。

OLC_DisplayChar(uint8 priority, uint8 line, uint8 offset, str disp_str);
   priority : 実行権限
        OLC_CHAR_USER  : 時計等のシステムが表示する内容を優先します
        OLC_CHAR_FORCE : システムが表示する内容に上書きをします
    line : 表示行(上下方向)
        018 [pixel] : 18を超えて指定すると表示されません
    offset : 表示列(左右方向)
        015[文字]16文字を超えた内容は表示されません
    disp_str : 表示する文字データ

表示出来る文字はASCIIの記号と数字、英数字の大文字/小文字です。
(※エスケープ文字は非対応のためダブルクオーテーションは表示出来ません。)

文字レイアウト

[コード例]
#include "olcAPI.h"
   
// 初期化
func event_init() {
    //直接文字列を指定
    OLC_DisplayChar(OLC_CHAR_FORCE,0,0, "Hello World!   ");
    OLC_DisplayChar(OLC_CHAR_FORCE,18,0, "Recipe Language");
    return(0);
}

func any_func() {
    str outstr[20];
    outstr = "Hello World!   ";
    //文字変数を指定
    OLC_DisplayChar(OLC_CHAR_FORCE,0,0, outstr);
}

OLC_DiplayFree ()

OLEDに自由にピクセルを表示するAPIになります。

OLC_DisplayFree(uint8 priority, uint8 line, uint32 pixel_data0, uint32
         pixel_data1, uint32 pixel_data2, uint32 pixel_data3, uint8 size)
   priority : 実行権限
        0:OLC_CHAR_USER  : 時計等のシステムが表示する内容を優先します
        1:OLC_CHAR_FORCE : システムが表示する内容に上書きをします
    line : 表示行(上下方向)
        035 [pixel] : 
    pixel_data03 : 表示データ
        32pixel単位のビットパターンで表現される表示データ
    size : 8pixel単位での左から表示するデータの個数

横方向のピクセルパターンをlineごとに指定するAPIです。全画面の描画するためには35行分の指定が必要です。

フリーレイアウト

[コード例]
#include "olcAPI.h"
   
// 初期化
func event_init() {

    uint32 ptn1; ptn1 = 0xff00ff00;
    uint32 ptn2; ptn2 = 0x00ff00ff;
    OLC_DisplayFree(OLC_FREE_FORCE,0,ptn1,ptn1,ptn1,ptn1,16);
    OLC_DisplayFree(OLC_FREE_FORCE,2,ptn2,ptn2,ptn2,ptn2,8);

    return(0);
}

上記サンプルコードでは破線のパターンを表示します。2段めは破線のパターンを半分(8pixel x 8個 = 64pixel分)表示となります。


サンプルコードの解説

「0601_ボタン押しでOLEDに文字を表示させる」

このサンプルコードではボタンを押下した数をOLEDに表示をします。

サンプルコード

関連情報等

各サンプルコードについて動作確認を行っておりますが、全ての環境において動作を保証するものではありません。正しく動作することを確認の上でご利用ください。

対応機種:KC4-C-100A/KC4-C-101A