ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:ictu

Ictu()

Ictu()は入力の立ち上がり回数を数え、設定値に達するとtrueを返します。

Ictu コマンドの動作フロー

bool Ictu(uint8_t counter_id, bool CU, bool RESET, int32_t PV)

コマンド

コマンド 引数 戻り値 動作
Ictu(counter_id, CU, RESET, PV) uint8_t counter_id — カウンタを区別する番号。同じ計数処理には同じ番号を使用
bool CU — 計数入力。LOWからHIGHに変化すると1増加
bool RESET — trueの場合、現在のカウント値を0にリセット
int32_t PV — 目標個数。現在値がこの値以上になるとtrueを返す
bool 入力の立ち上がり回数を数え、設定値に達するとtrueを返します。

初めて使う方への説明

Ictu()は、センサがONになっている時間を測るコマンドではありません。センサがLOWからHIGHに変化した回数を数えます。例えば、品物がセンサの前を1回通過すると入力はLOW → HIGH → LOWと変化し、カウンタは1増えます。センサがHIGHのままでも、複数回は数えません。

呼び出し形式Ictu(counter_id, CU, RESET, PV)は、次のように読みます。

  • counter_id: 複数のカウンタを区別する番号です。同じ計数処理には常に同じ番号を使用します。
  • CU: 計数入力です。LOW → HIGHに変化した瞬間、現在値が1増えます。
  • RESET: trueの場合、現在値を0にクリアします。RESET中はCUがONになっても数えません。
  • PV: 目標個数です。現在値がこの値以上になると、戻り値がtrueになります。

入力変化を検出できるように、loop()から繰り返し呼び出します。下の例では入力0のセンサで品物を5個数え、目標に達するとボードのステータスLEDを点灯します。入力1のリセットボタンを押すと、0個から数え直します。

使用例

const uint8_t COUNTER_ID = 0;
const uint8_t ITEM_SENSOR_PIN = 0;
const uint8_t RESET_BUTTON_PIN = 1;
const uint8_t FULL_LAMP_PIN = LED_BUILTIN;
const int32_t BOX_CAPACITY = 5;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  const bool itemSensor = digitalRead(ITEM_SENSOR_PIN) == HIGH;
  const bool resetButton = digitalRead(RESET_BUTTON_PIN) == HIGH;
  const bool boxFull = Ictu(COUNTER_ID, itemSensor, resetButton, BOX_CAPACITY);  // 入力の立ち上がり回数を数え、設定値に達するとtrueを返します。
  digitalWrite(FULL_LAMP_PIN, boxFull ? HIGH : LOW);
 
  static bool previousBoxFull = false;
  if (boxFull && !previousBoxFull) {
    Serial.println(F("5 items counted: box is full"));
  }
  previousBoxFull = boxFull;
}

注意事項

  • CULOW → HIGHの変化だけを数えます。信号がHIGHのままなら、1回だけ増加します。
  • RESETtrueの呼び出しでは現在値を0にクリアし、同じ呼び出しのCUは数えません。
  • PVは1以上の目標個数に設定してください。PVが0以下の場合、初期値0の時点で目標に達したと判断されます。
  • センサパルスがloop()の実行より速い場合、変化を取りこぼすことがあります。高速パルスには製品の高速カウンタ機能を使用してください。
  • 異なる計数処理には異なるcounter_idを使用し、同じ番号をCTU・CTD・CTUDで共用しないでください。
  • 現在のカウント値が必要な場合だけ、同じcounter_idIgetCount()を使用してください。

同じカテゴリの内蔵コマンド

ja-jp_commands/reference/ictu.txt · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki