ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:fifo

差分

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

この比較画面へのリンク

次のリビジョン
前のリビジョン
ja-jp_commands:reference:fifo [2026/09/07 21:53] – 만듦 - 바깥 편집 127.0.0.1ja-jp_commands:reference:fifo [2026/09/12 23:27] (現在) – 바깥 편집 127.0.0.1
行 14: 行 14:
  
 ===== 使用例 ===== ===== 使用例 =====
 +
 +シリアルモニタから''i''を2回送り、10と20を保存します。''o''を2回送ると10、20の順に出力されます。''r''でバッファを空にします。
  
 <code cpp> <code cpp>
-uint16_t fifoOut+uint16_t nextValue = 10
-FIFO(0, digitalRead(0)digitalRead(1)D[0]fifoOut, 10);+uint16_t removedValue = 0; 
 + 
 +void setup() { 
 +  Serial.begin(115200); 
 +  Serial.println(F("i: store, o: take, r: reset")); 
 +
 + 
 +void loop() { 
 +  if (!Serial.available()) return; 
 +  const char key = Serial.read(); 
 +  const bool store = key == 'i'; 
 +  const bool take = key == 'o'; 
 +  const bool reset = key == 'r'; 
 +  if (!store && !take && !reset) return; 
 + 
 +  const bool ok = FIFO(0, store, take, nextValue, removedValue, 4, reset);  // INまたはOUTの立ち上がり時に値を保存・取り出します。 
 +  FIFO(0, false, false, 0, removedValue4);  // 次の入力でも立ち上がりを検出できるよう、INとOUTをOFFに戻します。 
 + 
 +  if (reset) { 
 +    nextValue = 10
 +    Serial.println(F("buffer cleared")); 
 +  } else if (!ok) { 
 +    Serial.println(F("buffer full or empty")); 
 +  } else if (store) { 
 +    Serial.print(F("stored: ")); 
 +    Serial.println(nextValue); 
 +    nextValue += 10; 
 +  } else { 
 +    Serial.print(F("taken: ")); 
 +    Serial.println(removedValue); 
 +  } 
 +}
 </code> </code>
 +
 +満杯のバッファへの保存、空のバッファからの取り出しは失敗します。
  
 ===== 注意事項 ===== ===== 注意事項 =====
  
 ''IN''、''OUT''、''CU''、''CD''は立ち上がり時に動作します。各カウンタ・バッファに固有の''id''を使用し、''size''は必要な範囲で小さく設定してください。 ''IN''、''OUT''、''CU''、''CD''は立ち上がり時に動作します。各カウンタ・バッファに固有の''id''を使用し、''size''は必要な範囲で小さく設定してください。
 +
 +===== 同じカテゴリの内蔵コマンド =====
 +
 +  * [[:ja-jp_commands:reference:filo|FILO() 詳細説明を見る]]
  
 [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]
  
ja-jp_commands/reference/fifo.1788785588.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki