ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:itmr

差分

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

この比較画面へのリンク

次のリビジョン
前のリビジョン
ja-jp_commands:reference:itmr [2026/09/07 21:53] – 만듦 - 바깥 편집 127.0.0.1ja-jp_commands:reference:itmr [2026/10/25 08:42] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 ====== Itmr() ====== ====== Itmr() ======
  
-''Itmr()''は(Retentive Timer)条件がONの時間を積算し、Reset入力で初期化します。+''Itmr()''(Retentive Timer)は、条件がONの時間を積算し、Reset入力で初期化します。
  
 {{:ja-jp_commands:reference:itmr.svg?900|Itmr コマンドの動作フロー}} {{:ja-jp_commands:reference:itmr.svg?900|Itmr コマンドの動作フロー}}
行 10: 行 10:
  
 ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^ ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^
-| ''Itmr(timer_id, state, delayTime, reset)'' | ''uint8_t timer_id'' — タイマ番号。''0'' ~ ''255''の範囲で使用可能\\ ''bool state'' — タイマ入力状態\\ ''unsigned long delayTime'' — 設定時間。単位はms\\ ''bool reset = false'' — ''Itmr''積算値の初期化 | ''bool'' | (Retentive Timer)条件がONの時間を積算し、Reset入力で初期化します。 |+| ''Itmr(timer_id, state, delayTime, reset)'' | ''uint8_t timer_id'' — タイマ番号。''0'' ~ ''255''の範囲で使用可能\\ ''bool state'' — タイマ入力状態\\ ''unsigned long delayTime'' — 設定時間。単位はms\\ ''bool reset = false'' — ''Itmr''積算値の初期化 | ''bool'' | 条件がONの時間を積算し、Reset入力で初期化します。 |
  
  
 ===== 使用例 ===== ===== 使用例 =====
 +
 +MPINO-8A4R(T)-Sを選択した例です。入力''P0''と出力''P32''を使用し、''loop()''を止めずに毎回コマンドを呼び出します。''P0''のON時間を累積し、3秒で''P32''をONにします。''P0''がOFFでも累積値を保持し、''P1''で初期化します。
  
 <code cpp> <code cpp>
-bool Iton(uint8_t timer_id, bool state, unsigned long delayTime); +const uint8_t RUN_INPUT = 0; 
-bool Itof(uint8_t timer_id, bool state, unsigned long delayTime); +const uint8_t RESET_INPUT = 1; 
-bool Itpl(uint8_t timer_id, bool state, unsigned long delayTime); +const uint8_t OUTPUT_PIN = 32; 
-bool Itmon(uint8_t timer_id, bool state, unsigned long delayTime); + 
-bool Itmr(uint8_t timer_id, bool state, unsigned long delayTime, bool reset = false); +void setup() {} 
-unsigned long IgetTime(uint8_t timer_id); + 
-bool IgetState(uint8_t timer_id);+void loop() { 
 +  const bool run = digitalRead(RUN_INPUT) == HIGH; 
 +  const bool reset = digitalRead(RESET_INPUT) == HIGH; 
 +  const bool elapsed = Itmr(0, run, 3000, reset);  // ON時間だけを累積し、resetがtrueなら初期化します。 
 +  digitalWrite(OUTPUT_PIN, elapsed ? HIGH : LOW); 
 +}
 </code> </code>
  
 ===== 注意事項 ===== ===== 注意事項 =====
  
-  * タイマ割り込みコールバックはISR内で実行されます。コールバックではフラグだけを変更し、実際の制御処理を''loop()''で行うのが安全です。 +  * 経過時間と入力OFFを処理するため、タイマコマンドを''loop()''で繰り返し呼び出します。 
-  * コールバック内で''delay()''、''Serial''、I2C、SPIなど時間がかかる処理や割り込みに依存するコードを使用しません。 +  * 異なるタイマ動作で同じ''timer_id''を共有すると状態が混ざるため、別の番号を使用します。 
-  * Modbus RTUは通常''loop()''で''ImodbusRTU()''を繰り返し呼び出します。長い''delay()''やデバッグ出力で''loop()''が遅くなる場合だけ、十分な周期のタイマ割り込みから''ImodbusRTU()''を呼び出します。 +  * ''reset''がtrueなら累積時間と完了状態が初期化されます。 
-  * Timer2を使う''tone()''、またはTimer2 PWMピンの''analogWrite()''と、既定の''ItimerSet()''は同時使用しません。 + 
-  * Timer1、Timer3、Timer4、Timer5を明示的に使用すると、同じタイマを使うPWM、アナログ出力、高速カウンタ機能と競合する場合があります。 +===== 同じカテゴリの内蔵コマンド ===== 
-  * 1つのハードウェアタイマには''Itimer''コールバックを1つだけ設定します。 + 
-  * スケッチで同じタイマのISRを直接定義すると、''Itimer''の動作と競合する場合があります。 +  * [[:ja-jp_commands:reference:iton|Iton() 詳細説明を見る]] 
-  * ''ItimerStopAll()''はハードウェア割り込みタイマだけを停止します。''Iton''、''Itof''、''Itmr''などのPLCスタイルタイマの状態は初期化しません。+  * [[:ja-jp_commands:reference:itof|Itof() 詳細説明を見る]] 
 +  * [[:ja-jp_commands:reference:itpl|Itpl() 詳細説明を見る]] 
 +  * [[:ja-jp_commands:reference:itmon|Itmon() 詳細説明を見る]]
  
 [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]
  
ja-jp_commands/reference/itmr.1788785591.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki