ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:ictu

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
ja-jp_commands:reference:ictu [2026/09/07 21:53] – 만듦 - 바깥 편집 127.0.0.1ja-jp_commands:reference:ictu [2026/09/08 00:53] (現在) – 바깥 편집 127.0.0.1
行 10: 行 10:
  
 ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^ ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^
-| ''Ictu(counter_id, CU, RESET, PV)'' | ''uint8_t counter_id'' — カウンタ番号。''uint8_t''の範囲のため''0'' ~ ''255''を使用可能\\ ''bool CU''\\ ''bool RESET''\\ ''int32_t PV'' — 設定値 | ''bool'' | 入力の立ち上がり回数を数え、設定値に達するとtrueを返します。 |+| ''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個から数え直します。
  
  
行 16: 行 29:
  
 <code cpp> <code cpp>
 +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() { void loop() {
-  bool pulse = digitalRead(0);+  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);
  
-  if (Ictu(40, pulse, false, 10)) { +  static bool previousBoxFull = false; 
-    digitalWrite(13, HIGH);+  if (boxFull && !previousBoxFull) { 
 +    Serial.println(F("5 items counted: box is full"));
   }   }
 +  previousBoxFull = boxFull;
 } }
 </code> </code>
行 27: 行 55:
 ===== 注意事項 ===== ===== 注意事項 =====
  
-  * 従来の0~31固定制限削除されしただし引数型が''uint8_t''ため最大IDは''255''です。 +  * ''CU''''LOW → HIGH''の変化だけを数え信号が''HIGH''のままなら、1回け増加ます。 
-  * メモリ不足でカウタ状態を確保できない場合、カウンタコマンドは''false''または''0''ます。 +  * ''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|← 内蔵コマンド一覧]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]
  
ja-jp_commands/reference/ictu.1788785589.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki