====== Ictu() ====== ''Ictu()''は入力の立ち上がり回数を数え、設定値に達するとtrueを返します。 {{:ja-jp_commands:reference:ictu.svg?900|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; } ===== 注意事項 ===== * ''CU''は''LOW → HIGH''の変化だけを数えます。信号が''HIGH''のままなら、1回だけ増加します。 * ''RESET''が''true''の呼び出しでは現在値を0にクリアし、同じ呼び出しの''CU''は数えません。 * ''PV''は1以上の目標個数に設定してください。''PV''が0以下の場合、初期値0の時点で目標に達したと判断されます。 * センサパルスが''loop()''の実行より速い場合、変化を取りこぼすことがあります。高速パルスには製品の高速カウンタ機能を使用してください。 * 異なる計数処理には異なる''counter_id''を使用し、同じ番号をCTU・CTD・CTUDで共用しないでください。 * 現在のカウント値が必要な場合だけ、同じ''counter_id''で''IgetCount()''を使用してください。 ===== 同じカテゴリの内蔵コマンド ===== * [[:ja-jp_commands:reference:ictd|Ictd() 詳細説明を見る]] * [[:ja-jp_commands:reference:ictud|Ictud() 詳細説明を見る]] * [[:ja-jp_commands:reference:igetcount|IgetCount() 詳細説明を見る]] * [[:ja-jp_commands:reference:isetcount|IsetCount() 詳細説明を見る]] * [[:ja-jp_commands:reference:ictuddownstate|IctudDownState() 詳細説明を見る]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]