ボタン

概要

本製品には前面部にボタンを搭載しています。ここではボタンをレシピ言語から制御する方法を紹介します。

Button

ボタン機能の特徴

ボタン機能の特徴を以下に示します。


[ボタン押下時間とイベントの種類]

ボタンの押下時間は押下してから離すまでの時間です。該当の押下時間に応じて発行されるイベントの種類が変わります。

押下時間 発行されるイベント
0.1~1秒 短押下イベント
1~4秒 長押下イベント
[ボタンのシステム側から利用]

ボタンは押下時にディスプレイに時計を表示するなどシステム側からも利用しています。ボタンをユーザイベントとして利用する際にはこれらとの競合がありますので、意図した動作にする際にはシステムからの利用タイミングを理解しておく必要があります。
システム側からのボタン利用:

押下時間 本製品動作
1秒以下 ディスプレイが点灯し時計画面が表示されます
4秒以上 電源をオフします(USB Type-C非接続時のみ)
13秒以上 強制的に再起動します

ボタンの制御

ボタンのAPI

ボタンを制御するAPIは以下となります。

API 内容
1 UIC_SenseButton() ボタン押下時のイベント登録
2 UIC_SenseButtonS() 0.1~1秒押し時のイベント登録
3 UIC_SenseButtonM() 1~4秒押し時のイベント登録

UIC_SenseButton ()

ボタン押下時のイベント登録をするためのAPIです。

UIC_SenseButton(uint32 sense_min, uint32 sense_max, uint8 event_id)
   sense_min : ボタン押下時間の最 [msec]
   sense_max : ボタン押下時間の最 [msec]
   event_id  : ボタン押下時のイベントID

最小値と最大値間の間でボタン押下と検出した場合に、このAPIを利用したタスクに対して、登録されたイベントを発行します。最大値は13秒以上には登録しても、製品仕様により強制的に再起動となります。
※このAPIを主としてUIC_SenseButtonS,MのAPIを構成しています。

[コード例]

ボタン押下時間が1秒~4秒の場合に、イベントを発行する

#include "uicAPI.h"

// ボタン押下イベント
#define UNSYNC_EVENT_BUTTON 1

// mainループ処理
void main_loop() {
   
    // ボタン検出イベントの処理
    else if(event_id == UNSYNC_EVENT_BUTTON) {
        event_key();
    }
   

func any_func() {
    // ボタン押しのイベント登録
    UIC_SenseButton(1000,4000,UNSYNC_EVENT_BUTTON);
    return(0);
}

func event_key() {
    // ボタンイベントの内容を記述

} 

UIC_SenseButtonS ()

ボタン押下(0.1~1秒押し)時のイベント登録をするためのAPI

UIC_SenseButtonS(uint8 event_id)
    event_id     : ボタン押下時のイベントID
  本APIはUIC_SenseButton(100,1000,event_id)を実行します

UIC_SenseButtonM ()

ボタン押下(1~4秒押し)時のイベント登録をするためのAPI

UIC_SenseButtonM(uint8 event_id)
    event_id     : ボタン押下時のイベントID
  本APIはUIC_SenseButton(1000,4000,event_id)を実行します

サンプルコードの解説

「0801_ボタン押下検出で検出結果をOLED表示」

このサンプルコードではボタンを押下した際に、検出結果をOLEDに表示をします。

関連情報等

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

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