ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:igetstate

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja-jp_commands:reference:igetstate [2026/09/08 00:53] – 바깥 편집 127.0.0.1ja-jp_commands:reference:igetstate [2026/09/14 20:30] (現在) – 外部編集 127.0.0.1
行 14: 行 14:
  
 ===== 使用例 ===== ===== 使用例 =====
 +
 +MPINO-8A4R(T)-Sを選択した例です。入力''P0''と出力''P32''を使用し、''loop()''を止めずに毎回コマンドを呼び出します。 ''Iton(0, …)''の現在の出力状態を''IgetState(0)''で読み、''P32''へ反映します。
  
 <code cpp> <code cpp>
-const uint8_t START_INPUT = 0; +const uint8_t INPUT_PIN = 0; 
-const uint8_t RESET_INPUT = 1; +const uint8_t OUTPUT_PIN = 32;
-const uint8_t RUN_OUTPUT = 32;+
  
-void setup() { +void setup() {}
-  Serial.begin(115200); +
-}+
  
 void loop() { void loop() {
-  const bool start IdigitalRead(START_INPUT, 5);  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。 +  const bool inputOn digitalRead(INPUT_PIN== HIGH; 
-  const bool reset = IdigitalRead(RESET_INPUT, 5) // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。 +  Iton(0, inputOn, 1000);  // 状態読む前毎回loopでタイマを更新します。 
-  const bool ready = Iton(0, start, 1000);  // (On Delay Timer)条件が一定時間ON維持するとtrueを返します。 +  const bool done = IgetState(0);  // 同じ番号のタイマの出力状態を読みます。 
-  const bool stopDelay = Itof(1, ready, 500);  // (Off Delay Timer)条件がOFFなってから一定時間後にfalseを返します。 +  digitalWrite(OUTPUT_PINdone ? HIGH : LOW);
-  const bool startPulse = Itpl(2, ready, 200);  // (Pulse Timer)条件がONになった瞬間から設定時間だけtrueを返します。 +
-  const bool inspectionWindow = Itmon(3, startPulse, 3000);  // (Monostable Timer)動作中に再入力されても時間が延長されないパルスを出力します。 +
-  const bool batchDone = Itmr(4, ready, 10000, reset);  // (Retentive Timer)条件がONの時間を累積し、Reset入力初期化します。 +
-  const unsigned long elapsed = IgetTime(4);  // 指定タイマの現在の経過時間します。 +
-  const bool savedDone = IgetState(4);  // 指定タイマの現在の出力状態を返します。 +
- +
-  digitalWrite(RUN_OUTPUTstopDelay && !batchDone ? HIGH : LOW); +
-  if (inspectionWindow && elapsed % 1000 < 20) { +
-    Serial.println(savedDone ? F("batch complete") : F("batch running")); +
-  }+
 } }
 </code> </code>
行 44: 行 33:
 ===== 注意事項 ===== ===== 注意事項 =====
  
-  * タイマ割り込みコールバックはISR内で実行されます。コールバックではフラグだけを変更し、実際の制御処理を''loop()''で行うのが安全です。 +  * 経過時間と入力OFFを処理するため、タイママンドを''loop()''で繰り返し呼び出します。 
-  * コールバック内で''delay()''、''Serial''、I2C、SPIなど時間がかかる処理や割り込みに依存するコドを使用しません。 +  * 異なるタイマ動作で同じ''timer_id''共有ると状態が混ざる番号を使用しま。 
-  * Modbus RTUは通常''loop()''''ImodbusRTU()''繰り返し呼び出します。長い''delay()''やデバッグ出力で''loop()''が遅くなる場合だけ、十分な周期のタイマ割り込みから''ImodbusRTU()''呼び出しま。 +  * に同じ番号のタイマを呼びます。だ作成されていない番号falseします。
-  * Timer2を使う''tone()''、まはTimer2 PWMピンの''analogWrite()''既定''ItimerSet()''は同時使用しません。 +
-  * Timer1、Timer3、Timer4、Timer5を明示的使用すると、同じタイマを使うPWM、アナログ力、高速カウンタ機能と競合する場合があります。 +
-  * 1つのハードウェアタイマには''Itimer''コールバックを1つけ設定します。 +
-  * スケッチで同じタイマのISRを直接定義すると、''Itimer''の動と競合する場合があります。 +
-  * ''ItimerStopAll()''ハードウェア割り込みタイマだけ停止します。''Iton''、''Itof''、''Itmr''などのPLCスタイルタイマの状態は初期化しません+
  
 ===== 同じカテゴリの内蔵コマンド ===== ===== 同じカテゴリの内蔵コマンド =====
ja-jp_commands/reference/igetstate.1788796399.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki