# 第9章: 統合とロボット制御 ここまでの部品を組み合わせ、OS の上でロボット制御タスクを走らせます。 ## サンプルコード - ディレクトリ: `docs/os-on-arduino/code/09_integration` - ビルドと書き込み: ```bash uv run pio run -d 09_integration -t upload uv run pio device monitor -b 115200 ``` コードを見る: [docs/os-on-arduino/code/09_integration](https://github.com/iory/learning-os-from-arduino/tree/main/docs/os-on-arduino/code/09_integration) ## ソースコード この章のスケッチです。ファイル名をクリックすると開きます。コードは原稿リポジトリから自動で同期されているので、ここに出ているものが常に最新です。 :::{dropdown} `src/main.cpp` — 165 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/src/main.cpp) ```{literalinclude} ../../../../code/09_integration/src/main.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `include/interpreter.h` — 36 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/include/interpreter.h) ```{literalinclude} ../../../../code/09_integration/include/interpreter.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/os_display.h` — 18 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/include/os_display.h) ```{literalinclude} ../../../../code/09_integration/include/os_display.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/os_fault.h` — 46 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/include/os_fault.h) ```{literalinclude} ../../../../code/09_integration/include/os_fault.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/os_kernel.h` — 79 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/include/os_kernel.h) ```{literalinclude} ../../../../code/09_integration/include/os_kernel.h :language: cpp :linenos: ``` ::: :::{dropdown} `include/shell.h` — 23 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/include/shell.h) ```{literalinclude} ../../../../code/09_integration/include/shell.h :language: cpp :linenos: ``` ::: :::{dropdown} `src/interpreter.cpp` — 288 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/src/interpreter.cpp) ```{literalinclude} ../../../../code/09_integration/src/interpreter.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/os_display.cpp` — 162 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/src/os_display.cpp) ```{literalinclude} ../../../../code/09_integration/src/os_display.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/os_fault.cpp` — 170 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/src/os_fault.cpp) ```{literalinclude} ../../../../code/09_integration/src/os_fault.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/os_kernel.cpp` — 266 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/src/os_kernel.cpp) ```{literalinclude} ../../../../code/09_integration/src/os_kernel.cpp :language: cpp :linenos: ``` ::: :::{dropdown} `src/shell.cpp` — 237 行 :icon: code [GitHub で開く](https://github.com/iory/learning-os-from-arduino/blob/main/docs/os-on-arduino/code/09_integration/src/shell.cpp) ```{literalinclude} ../../../../code/09_integration/src/shell.cpp :language: cpp :linenos: ``` ::: ## 実機での出力 Arduino UNO R4 WiFi の実機で実際に取得した出力です(macOS / Windows の 両方で同じ結果を確認しています)。手元の出力と見比べてください。 ```text ps ID NAME STATE CPU% -- ---- ----- ---- 0 idle READY 100% 1 Heartbeat BLOCKED 0% 2 Sensor BLOCKED 0% 3 Servo BLOCKED 0% 4 LED_Ind BLOCKED 0% 5 Button BLOCKED 0% 6 Shell RUNNING 0% 7 Display BLOCKED 0% > ``` ## つまずきやすいポイント (読者からの質問に応じて随時追記します。質問は [GitHub Issues](https://github.com/iory/build-your-own-arduino-rtos/issues) へどうぞ)