目次

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)は、次のように読みます。

入力変化を検出できるように、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;
}

注意事項

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

← 内蔵コマンド一覧