====== FILO() ====== ''FILO()''は後に保存した16ビットデータから順に出力します。 {{:ja-jp_commands:reference:filo.svg?900|FILO コマンドの動作フロー}} ''bool FILO(uint8_t filo_id, bool IN, bool OUT, uint16_t input, uint16_t &output, uint8_t size, bool reset = false)'' ===== コマンド ===== ^ コマンド ^ 引数 ^ 戻り値 ^ 動作 ^ | ''FILO(filo_id, IN, OUT, input, output, size, reset)'' | ''uint8_t filo_id''\\ ''bool IN'' — 立ち上がりエッジで入力を保存\\ ''bool OUT'' — 立ち上がりエッジで出力\\ ''uint16_t input'' — 保存するワード\\ ''uint16_t &output'' — 出力値を受け取る参照変数\\ ''uint8_t size'' — バッファサイズ\\ ''bool reset = false'' — バッファの初期化 | ''bool'' | 後に保存した16ビットデータから順に出力します。 | ===== 使用例 ===== シリアルモニタから''a''を送ると次の番号を保存し、''p''を送ると最後に保存した番号を取り出します。''c''でバッファを消去します。1文字ずつ送って動作を確認できます。 uint16_t nextNumber = 0; uint16_t lastNumber = 0; void setup() { Serial.begin(115200); } void loop() { if (!Serial.available()) return; const char action = Serial.read(); const bool store = action == 'a'; const bool retrieve = action == 'p'; const bool clearBuffer = action == 'c'; if (store) ++nextNumber; const bool ok = FILO(0, store, retrieve, nextNumber, lastNumber, 16, clearBuffer); // 番号を保存し、取り出し信号で最後の番号を読み出します。 FILO(0, false, false, nextNumber, lastNumber, 16, false); // 次の文字でも立ち上がり信号を作れるよう入力をLOWに戻します。 if (retrieve && ok) Serial.println(lastNumber); if (retrieve && !ok) Serial.println(F("Buffer empty")); } ===== 注意事項 ===== ''IN''、''OUT''、''CU''、''CD''は立ち上がり時に動作します。各カウンタ・バッファに固有の''id''を使用し、''size''は必要な範囲で小さく設定してください。 ===== 同じカテゴリの内蔵コマンド ===== * [[:ja-jp_commands:reference:fifo|FIFO() 詳細説明を見る]] [[:ja-jp_commands:builtin|← 内蔵コマンド一覧]]