ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:ictu

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
ja-jp_commands:reference:ictu [2026/09/07 23:35] – 바깥 편집 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個から数え直します。
  
  
行 17: 行 30:
 <code cpp> <code cpp>
 const uint8_t COUNTER_ID = 0; const uint8_t COUNTER_ID = 0;
-const int32_t BOX_CAPACITY = 20;+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() { void setup() {
行 24: 行 40:
  
 void loop() { void loop() {
-  const bool itemSensor = IdigitalRead(0, 5);  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。 +  const bool itemSensor = digitalRead(ITEM_SENSOR_PIN== HIGH; 
-  const bool resetButton = IdigitalRead(1, 5);  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。+  const bool resetButton = digitalRead(RESET_BUTTON_PIN== HIGH;
   const bool boxFull = Ictu(COUNTER_ID, itemSensor, resetButton, BOX_CAPACITY);  // 入力の立ち上がり回数を数え、設定値に達するとtrueを返します。   const bool boxFull = Ictu(COUNTER_ID, itemSensor, resetButton, BOX_CAPACITY);  // 入力の立ち上がり回数を数え、設定値に達するとtrueを返します。
-  digitalWrite(32, boxFull ? HIGH : LOW);+  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;
 } }
 </code> </code>
行 33: 行 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.1788791737.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki