diff --git a/CLAUDE.md b/CLAUDE.md index 0f23d9f..fe35a42 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,12 +1,15 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + + + +本ファイルは、このリポジトリのコードを扱う Claude Code(claude.ai/code)への指針を示す。 ## プロジェクト概要 -PHPでマイコンとのシリアル通信を行うクロスプラットフォームライブラリ。 -PySerialやRuby serialportのような使い勝手を目指す。 -Windows、Mac、Linuxで動作し、PHP 8.5に対応。 +PHP でマイコンとシリアル通信するクロスプラットフォームライブラリ。 +PySerial や Ruby serialport のような使い勝手を目指す。 +Windows、Mac、Linux で動作し、PHP 8.5 に対応。 ## 技術スタック @@ -17,7 +20,7 @@ Windows、Mac、Linuxで動作し、PHP 8.5に対応。 ## プロジェクト構造 -``` +```text php-serial/ ├── src/PhpSerial/ # メインライブラリコード │ ├── SerialPort.php # シリアルポート通信のメインクラス @@ -36,25 +39,29 @@ php-serial/ ## アーキテクチャ設計 ### 実装方針 -1. **Pure PHP実装**: PHP標準機能とFFIでシリアルポート制御 -2. **プラットフォーム抽象化**: Platform配下で各OS固有の処理を分離 -3. **Windows FFI**: Windows APIを直接呼び出して正確なボーレート制御 + +1. **Pure PHP実装**: PHP 標準機能と FFI でシリアルポート制御 +2. **プラットフォーム抽象化**: Platform 配下で各 OS 固有の処理を分離 +3. **Windows FFI**: Windows API を直接呼び出して正確なボーレート制御 ### クラス設計 -- `SerialPort`: ユーザー向けAPI。open/close/read/writeを提供 + +- `SerialPort`: ユーザー向け API。open/close/read/write を提供 - `Configuration`: ボーレート、データビット、パリティ、ストップビットを管理 -- `Platform\Unix`: Linux/macOS向け、sttyコマンドを使用 -- `Platform\Windows`: Windows向け、fopenベース(FFI無効時のフォールバック) -- `Platform\WindowsFFI`: Windows向け、FFI + Windows API(推奨) +- `Platform\Unix`: Linux/macOS 向け、stty コマンドを使用 +- `Platform\Windows`: Windows 向け、fopen ベース(FFI 無効時のフォールバック) +- `Platform\WindowsFFI`: Windows 向け、FFI + Windows API(推奨) ## 開発コマンド ### 依存関係のインストール + ```bash composer install ``` ### テスト実行 + ```bash # 全テスト実行 composer test @@ -67,6 +74,7 @@ composer test:coverage ``` ### コーディングスタイルチェック + ```bash composer cs:check composer cs:fix @@ -75,68 +83,80 @@ composer cs:fix ## テスト戦略 ### ユニットテスト + - 設定クラスのバリデーション - プラットフォーム検出ロジック - コマンド生成ロジック ### モックテスト + - 実際のシリアルポートなしでテスト可能にする - システムコマンド実行部分をモック化 ### 統合テスト (任意) + - 実際のシリアルデバイスを使用したテスト -- CIでは実行不可のためローカル環境のみ +- CI では実行不可のためローカル環境のみ ## 重要な実装上の注意 ### 環境 -- PHP 8.5とComposerがインストール済み + +- PHP 8.5 と Composer がインストール済み - 初期セットアップ時は依存関係が未インストールの状態を想定 ### ファイルハンドル管理 -- `fopen()`でデバイスファイルを開く + +- `fopen()` でデバイスファイルを開く - ブロッキング/ノンブロッキングモードの制御 -- 確実な`fclose()`実行(デストラクタでも保証) +- 確実な `fclose()` 実行(デストラクタでも保証) ### プラットフォーム判定 -- `PHP_OS_FAMILY`定数を使用(Windows/Linux/Darwin) + +- `PHP_OS_FAMILY` 定数を使用(Windows/Linux/Darwin) - 各プラットフォームで異なるデバイスパス - Linux/Mac: `/dev/ttyUSB0`, `/dev/tty.usbserial-*` - - Windows: `COM1`, `COM2`等 + - Windows: `COM1`, `COM2` 等 ### エラーハンドリング + - デバイスが見つからない場合は例外をスロー - 設定値の範囲外チェック - ポートが開いていない状態での操作を防ぐ ### PHP 8.5固有機能の活用 + - Named Arguments - Constructor Property Promotion -- Match式 -- Union Types、Nullsafe演算子 -- PHP 8.5の新機能も積極的に活用 -- FFI(Foreign Function Interface): Windows APIの直接呼び出し +- Match 式 +- Union Types、Nullsafe 演算子 +- PHP 8.5 の新機能も積極的に活用 +- FFI(Foreign Function Interface): Windows API の直接呼び出し ### Windows FFI の重要性 -- Windows環境でボーレートを正確に設定するには FFI が必須 + +- Windows 環境でボーレートを正確に設定するには FFI が必須 - `php.ini` で `extension=ffi` と `ffi.enable=true` を設定 - FFI 無効時は従来の Windows クラスにフォールバック(機能制限あり) - 詳細は `docs/WINDOWS_FFI_SETUP.md` を参照 ## 参考にした既存実装 -- **Xowap/PHP-Serial**: 元祖PHP Serial、設計思想を参考 -- **sanchescom/php-serial**: PHP 7リファクタ版、モダンな実装 -- **PySerial**: Python実装、APIデザインの参考 +- **Xowap/PHP-Serial**: 元祖 PHP Serial、設計思想を参考 +- **sanchescom/php-serial**: PHP 7 リファクタ版、モダンな実装 +- **PySerial**: Python 実装、API デザインの参考 ## ドキュメントの文体 -- `README.md` と `docs/` は利用者向けの手引きのため「ですます調」・句点「。」で書く.textlint の該当ルールはファイル先頭のコメントで無効化する. +- Markdown の句読点は「、。」で統一する。 +- 利用者・開発者向けの手引き(`README.md`、`docs/`、`CONTRIBUTING.md`、`examples/**/README.md`)は「ですます調」で書く。 +- 規律やガイドライン(`CLAUDE.md`、`PHPDEV.md`)は「である調」で書く。 +- 中央テンプレの textlint は「である調」と句点「.」を求める。上記と食い違うルールは、各ファイル先頭のコメントで無効化する。 ## 開発の進め方 1. 最小限の機能で動作させる(open/close/read/write) -2. Windows環境で先行実装・テスト(開発環境) -3. Linux、macOSへの対応を追加 +2. Windows 環境で先行実装・テスト(開発環境) +3. Linux、macOS への対応を追加 4. エラーハンドリングの充実 -5. パフォーマンス改善(必要に応じてC拡張検討) +5. パフォーマンス改善(必要に応じて C 拡張検討) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2826c2..583909a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,17 +1,23 @@ # 開発ガイド + + + ## 目次 - [開発環境のセットアップ](#開発環境のセットアップ) - [品質確認手順](#品質確認手順) -- [テストの実行](#テストの実行) +- [PSR 準拠](#psr-準拠) +- [コミット前の確認](#コミット前の確認) +- [GitHub Actions](#github-actions) - [コントリビューション](#コントリビューション) +- [トラブルシューティング](#トラブルシューティング) ## 開発環境のセットアップ ### 必要な環境 -- PHP 8.1以上 +- PHP 8.1 以上 - Composer - Git @@ -35,7 +41,7 @@ composer qa このコマンドは以下を順番に実行します。 -1. PHP_CodeSniffer (PSR-12準拠チェック) +1. PHP_CodeSniffer (PSR-12 準拠チェック) 2. PHP-CS-Fixer (コードスタイルチェック) 3. PHPStan (静的解析) 4. PHPUnit (テスト) @@ -72,7 +78,7 @@ composer cs:fixer:fix #### 3. 静的解析 (PHPStan) -型安全性とバグのチェック (レベル8): +型安全性とバグのチェック (レベル 8): ```bash composer stan @@ -90,9 +96,9 @@ composer test composer test:coverage ``` -## PSR準拠 +## PSR 準拠 -このプロジェクトは以下のPSRに準拠しています。 +このプロジェクトは以下の PSR に準拠しています。 ### PSR-4 (オートロード) @@ -104,7 +110,7 @@ composer validate --strict ### PSR-12 (コーディング規約) -上記の`composer cs:check`で確認できます。 +上記の `composer cs:check` で確認できます。 ## コミット前の確認 @@ -118,14 +124,14 @@ composer qa ## GitHub Actions -プルリクエストやpush時に自動で以下が実行されます。 +Pull Request の作成時と push 時に、以下が自動で実行されます。 -- PHP 8.1, 8.2, 8.3, 8.4, 8.5での動作確認 -- Windows, Linux, macOSでの動作確認 +- PHP 8.1〜8.5 での動作確認 +- Windows, Linux, macOS での動作確認 - コード品質チェック (PSR-12, PHPStan) - テスト実行 -詳細は[.github/workflows/ci.yml](.github/workflows/ci.yml)を参照してください。 +詳細は [.github/workflows/ci.yml](.github/workflows/ci.yml) を参照してください。 ## コントリビューション @@ -133,28 +139,28 @@ composer qa 2. フィーチャーブランチを作成 (`git checkout -b feature/amazing-feature`) 3. 変更をコミット (`git commit -m 'Add amazing feature'`) 4. ブランチにプッシュ (`git push origin feature/amazing-feature`) -5. プルリクエストを作成 +5. Pull Request を作成 -### プルリクエストの要件 +### Pull Request の要件 - すべての品質チェックがパス (`composer qa`) - 新機能にはテストを追加 -- PSR-12, PSR-4に準拠 -- PHPStan レベル8でエラーなし +- PSR-12, PSR-4 に準拠 +- PHPStan レベル 8 でエラーなし ## トラブルシューティング ### PHPStanでFFI関連のエラーが出る -FFI関連のエラーは`phpstan.neon`で適切に無視設定されています。 +FFI 関連のエラーは `phpstan.neon` で適切に無視設定されています。 新たなエラーが出た場合は、以下を確認してください。 -- FFIのメソッドは動的に追加されるため、静的解析では検出できません -- FFI\CDataのプロパティも実行時に決定されます +- FFI のメソッドは動的に追加されるため、静的解析では検出できません +- FFI\CData のプロパティも実行時に決定されます これらは正常な動作です。 ### PHP-CS-Fixerでバージョン警告が出る -開発環境のPHPバージョンが8.1より新しい場合、警告が表示されることがあります。 +開発環境の PHP が 8.1 より新しいと、PHP-CS-Fixer は警告を表示することがあります。 これは情報提供のみで、エラーではありません。 diff --git a/PHPDEV.md b/PHPDEV.md index 58b3af8..8dc0187 100644 --- a/PHPDEV.md +++ b/PHPDEV.md @@ -1,7 +1,10 @@ # PHP開発ガイドライン -PHP開発における標準的なツール構成、ルール、プロセスをまとめたドキュメント。 -新規プロジェクト作成時やClaude Code起動時に参照することで、効率的な開発環境を構築できる。 + + + +PHP 開発における標準的なツール構成、ルール、プロセスをまとめたドキュメント。 +新規プロジェクト作成時や Claude Code 起動時に参照することで、効率的な開発環境を構築できる。 ## 目次 @@ -18,7 +21,7 @@ PHP開発における標準的なツール構成、ルール、プロセスを ### Composer -PHPの依存関係管理ツール。すべてのプロジェクトで使用する。 +PHP の依存関係管理ツール。すべてのプロジェクトで使用する。 ```bash # インストール確認 @@ -30,10 +33,10 @@ composer init ### PHP バージョン管理 -**最低要件**: PHP 8.1以上 -**推奨**: PHP 8.3以上(最新の安定版を使用) +**最低要件**: PHP 8.1 以上 +**推奨**: PHP 8.3 以上(最新の安定版を使用) -`composer.json`で明確に指定: +`composer.json` で明確に指定: ```json { @@ -52,11 +55,12 @@ composer init ### namespace構造 -``` +```text VendorName\PackageName\SubNamespace ``` 例: + ```php namespace PhpSerial\Platform; ``` @@ -122,7 +126,7 @@ return (new PhpCsFixer\Config()) #### 2. PHP_CodeSniffer -PSR準拠チェックツール。 +PSR 準拠チェックツール。 ```bash composer require --dev squizlabs/php_codesniffer @@ -150,7 +154,7 @@ parameters: ### Composerスクリプト設定 -`composer.json`に以下を追加: +`composer.json` に以下を追加: ```json { @@ -271,7 +275,7 @@ jobs: 1. コードスタイル(PSR-12) 2. 静的解析(PHPStan level 8) 3. ユニットテスト -4. 複数PHP版対応(8.1〜8.5) +4. 複数 PHP 版対応(8.1〜8.5) 5. クロスプラットフォーム(Ubuntu, Windows, macOS) ## プロジェクト初期化手順 @@ -283,6 +287,7 @@ composer init ``` 対話形式で以下を設定: + - Package name: `vendor-name/package-name` - Description: パッケージの説明 - Author: `Your Name ` @@ -326,6 +331,7 @@ composer.lock ### 6. README.md作成 必須セクション: + - 概要 - 動作環境 - インストール方法 @@ -336,6 +342,7 @@ composer.lock ### 7. CONTRIBUTING.md作成 開発者向けガイドライン: + - 環境構築手順 - 品質確認コマンド - テスト実行方法 @@ -374,7 +381,7 @@ git add . git commit -m "Add new feature" ``` -### 4. プルリクエスト前 +### 4. Pull Request 作成前 ```bash # 最新のmainブランチを取得 @@ -429,14 +436,14 @@ git push origin v1.0.0 ### 3. Packagist登録 -1. [https://packagist.org](https://packagist.org) にGitHubアカウントでサインイン +1. [https://packagist.org](https://packagist.org) に GitHub アカウントでサインイン 2. 「Submit」をクリック -3. リポジトリURL入力 +3. リポジトリ URL 入力 4. 「Check」→「Submit」 ### 4. 自動更新設定 -GitHubのWebhook設定を確認。自動で設定されるため、通常は手動設定不要。 +GitHub の Webhook 設定を確認。自動で設定されるため、通常は手動設定不要。 ## PHP 8.x 新機能の活用 @@ -493,9 +500,9 @@ $result = $object?->method()?->property; ### セキュリティ - ユーザー入力は必ずバリデーション -- SQLインジェクション対策(プリペアドステートメント使用) -- XSS対策(出力時のエスケープ) -- CSRF対策(トークン検証) +- SQL インジェクション対策(プリペアドステートメント使用) +- XSS 対策(出力時のエスケープ) +- CSRF 対策(トークン検証) ### パフォーマンス @@ -518,20 +525,20 @@ $result = $object?->method()?->property; - [ ] ディレクトリ構造作成(src, tests, examples, docs) - [ ] 品質保証ツールインストール(PHP-CS-Fixer, PHPStan, PHPUnit) - [ ] 設定ファイル作成(.php-cs-fixer.php, phpstan.neon, phpunit.xml) -- [ ] .gitignore作成 -- [ ] README.md作成 -- [ ] CONTRIBUTING.md作成 -- [ ] GitHub Actions設定 +- [ ] .gitignore 作成 +- [ ] README.md 作成 +- [ ] CONTRIBUTING.md 作成 +- [ ] GitHub Actions 設定 - [ ] `composer qa` で全チェック通過 - [ ] 初回コミット -Packagist公開時: +Packagist 公開時: -- [ ] composer.jsonメタデータ完備 -- [ ] README.md整備 +- [ ] composer.json メタデータ完備 +- [ ] README.md 整備 - [ ] 全テスト通過 - [ ] バージョンタグ作成 -- [ ] Packagist登録 +- [ ] Packagist 登録 - [ ] インストール確認 ## 参考資料 diff --git a/README.md b/README.md index 889cb5f..0035b64 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,25 @@ # PHP Serial - + -PHPでマイコンとのシリアル通信を行うクロスプラットフォームライブラリ。 +PHP でマイコンとシリアル通信するクロスプラットフォームライブラリ。 ## 概要 -PySerialやRuby serialportのような使い勝手を提供。 -Windows、Mac、Linuxで動作し、Pure PHP実装。 +PySerial や Ruby serialport のような使い勝手を提供。 +Windows、Mac、Linux で動作し、Pure PHP 実装。 ## 動作環境 -- PHP 8.1以上 +- PHP 8.1 以上 - Windows、Linux、macOS PHP 本体のセキュリティ修正が提供されているバージョン([サポート対象](https://www.php.net/supported-versions.php))で、最新のパッチリリースを使うことを推奨します。 ## インストール -Composerを使用してインストール: +Composer を使用してインストール: ```bash composer require tomio2480/php-serial @@ -69,7 +69,11 @@ $port->close(); ### ボーレート -対応: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 230400 +対応するボーレート(bps)は次のとおりです。 + +```text +110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 230400 +``` ```php $config = new Configuration(baudRate: 115200); @@ -122,22 +126,25 @@ $config ## デバイスパス ### Windows + ```php $port = new SerialPort('COM3'); ``` -**重要: Windows環境ではPHP FFI拡張の有効化を強く推奨します** +**重要:** Windows 環境では PHP FFI 拡張の有効化を強く推奨します。 + +正確で安定したシリアル通信を実現するため、`php.ini` で FFI を有効にしてください: -正確で安定したシリアル通信を実現するため、`php.ini`でFFIを有効にしてください: ```ini extension=ffi ffi.enable=true ``` -FFI無効時はフォールバック実装が使用されますが、**データ受信が動作せず送信のみ可能**となります。 -詳細は[docs/WINDOWS_FFI_SETUP.md](docs/WINDOWS_FFI_SETUP.md)を参照してください。 +FFI 無効時はフォールバック実装が使用されますが、**データ受信が動作せず送信のみ可能**となります。 +詳細は [docs/WINDOWS_FFI_SETUP.md](docs/WINDOWS_FFI_SETUP.md) を参照してください。 ### Linux + ```php $port = new SerialPort('/dev/ttyUSB0'); // または @@ -145,6 +152,7 @@ $port = new SerialPort('/dev/ttyACM0'); ``` ### macOS + ```php $port = new SerialPort('/dev/tty.usbserial'); ``` @@ -166,8 +174,8 @@ composer test ## 使用例 -基本的な使用例は[examples/basic.php](examples/basic.php)を参照。 -複数コマンド送信の例は[examples/advanced.php](examples/advanced.php)を参照。 +基本的な使用例は [examples/basic.php](examples/basic.php) を参照。 +複数コマンド送信の例は [examples/advanced.php](examples/advanced.php) を参照。 ## 開発 @@ -188,7 +196,7 @@ composer stan # PHPStan静的解析 (レベル8) composer test # テスト実行 ``` -詳細は[CONTRIBUTING.md](CONTRIBUTING.md)を参照してください。 +詳細は [CONTRIBUTING.md](CONTRIBUTING.md) を参照してください。 ## ライセンス diff --git a/docs/WINDOWS_FFI_SETUP.md b/docs/WINDOWS_FFI_SETUP.md index 2af7781..e27ce16 100644 --- a/docs/WINDOWS_FFI_SETUP.md +++ b/docs/WINDOWS_FFI_SETUP.md @@ -1,15 +1,16 @@ # Windows での FFI セットアップ - + -PHP の FFI(Foreign Function Interface)を有効化することで、Windows API を直接呼び出して正確なボーレート設定が可能になります。 +PHP の FFI(Foreign Function Interface)を有効化すると、Windows API を直接呼び出せます。 +これにより、ボーレートを正確に設定できます。 ## なぜ FFI が必要なのか Windows 環境で php-serial を使用する際、FFI 拡張が無効だと以下の警告が表示されます。 -``` +```text Warning: PHP FFI extension is not enabled. 警告: PHP FFI 拡張が無効です。 ``` @@ -29,12 +30,14 @@ FFI が無効な場合、以下の制限があります。 ### 1. php.ini の編集 php.ini の場所を確認: + ```bash php --ini ``` 出力例: -``` + +```text Configuration File (php.ini) Path: C:\php8.5 Loaded Configuration File: C:\php8.5\php.ini ``` @@ -96,7 +99,7 @@ php examples/test_ffi.php 以下のように表示されれば成功: -``` +```text PHP Version: 8.5.0 FFI extension loaded: Yes FFI is available! @@ -116,27 +119,29 @@ FFI が有効な環境では、以下の利点があります。 FFI が無効な場合は、従来の `fopen()` 実装にフォールバックしますが、以下の制限があります。 **制限事項:** + - **シリアルポートからのデータ受信が正常に機能しません** - - PHPの`fopen()`、`fread()`、`fgetc()`、`fgets()`はWindowsのCOMポートからの読み取りに対応していません + - PHP の `fopen()`、`fread()`、`fgetc()`、`fgets()` は Windows の COM ポートからの読み取りに対応していません - データの送信は可能ですが、受信は動作しません -- ボーレート設定の精度が低下する可能性があります +- ボーレートを正確に設定できない場合があります - Windows の `mode` コマンドに依存した設定となります -**重要:** FFI OFF環境では双方向通信が不可能です。送信のみ可能ですが、実用上はFFI有効化が必須です。 +**重要:** FFI OFF 環境では双方向通信が不可能です。送信のみ可能ですが、実用上は FFI 有効化が必須です。 **FFI OFF 環境での限定的な使用(送信のみ):** 1. **データ送信のみの場合** - - `write()`メソッドは動作します - - `read()`、`readLine()`は動作しません + - `write()` メソッドは動作します + - `read()`、`readLine()` は動作しません 2. **異なるボーレートが必要な場合** - 事前に `mode` コマンドでシリアルポートを設定してください: + ```powershell mode COM3 BAUD=115200 PARITY=n DATA=8 STOP=1 to=on xon=off ``` -**推奨:** Windows環境で双方向通信が必要な場合は、**必ずFFIを有効化してください**。 +**推奨:** Windows 環境で双方向通信が必要な場合は、**必ずFFIを有効化してください**。 ## トラブルシューティング @@ -148,4 +153,4 @@ FFI が無効な場合は、従来の `fopen()` 実装にフォールバック ### dll が見つからない -Windows 版 PHP には FFI が含まれているはずですが、見つからない場合は PHP を再インストールしてください。 \ No newline at end of file +Windows 版 PHP には FFI が含まれているはずですが、見つからない場合は PHP を再インストールしてください。 diff --git a/examples/arduino/README.md b/examples/arduino/README.md index af3eb5a..bc10e0f 100644 --- a/examples/arduino/README.md +++ b/examples/arduino/README.md @@ -1,6 +1,9 @@ # Arduino テストコード -PHPシリアル通信ライブラリのテスト用Arduinoスケッチ。 + + + +PHP シリアル通信ライブラリのテスト用 Arduino スケッチ。 ## ファイル @@ -11,66 +14,73 @@ PHPシリアル通信ライブラリのテスト用Arduinoスケッチ。 **対応するPHPコード**: `examples/basic.php` **動作**: -1. シリアル通信を9600bpsで開始 + +1. シリアル通信を 9600bps で開始 2. 受信した文字列に"Echo: "を付けて返信 **使い方**: -1. Arduino IDEで`echo.ino`を開く -2. Arduinoに書き込む -3. `.env`ファイルで接続ポートを設定 -4. `php examples/basic.php`を実行 + +1. Arduino IDE で `echo.ino` を開く +2. Arduino に書き込む +3. `.env` ファイルで接続ポートを設定 +4. `php examples/basic.php` を実行 ### led_control.ino -LEDを制御するコマンドプログラム。 +LED を制御するコマンドプログラム。 **対応するPHPコード**: `examples/advanced.php` **ボーレート**: 115200 **コマンド**: -- `LED_ON`: 内蔵LED(ピン13)を点灯 -- `LED_OFF`: 内蔵LEDを消灯 -- `GET_STATUS`: LED状態を取得 + +- `LED_ON`: 内蔵 LED(ピン 13)を点灯 +- `LED_OFF`: 内蔵 LED を消灯 +- `GET_STATUS`: LED 状態を取得 - `GET_TEMP`: 疑似温度データを取得 **使い方**: -1. Arduino IDEで`led_control.ino`を開く -2. Arduinoに書き込む -3. `.env`ファイルで接続ポートを設定 -4. `php examples/advanced.php`を実行 + +1. Arduino IDE で `led_control.ino` を開く +2. Arduino に書き込む +3. `.env` ファイルで接続ポートを設定 +4. `php examples/advanced.php` を実行 ## 必要な機材 -- Arduino Uno、Nano、またはMega -- USBケーブル +- Arduino Uno、Nano、または Mega +- USB ケーブル ## 注意事項 ### ポート番号の確認 **Windows**: + - デバイスマネージャーで確認 - 例: COM3, COM4 **Linux**: + ```bash ls /dev/ttyUSB* /dev/ttyACM* ``` **macOS**: + ```bash ls /dev/tty.usb* ``` ### シリアルモニタとの競合 -Arduino IDEのシリアルモニタを開いているとポートが使用中になります。 -PHPスクリプト実行前にシリアルモニタを閉じてください。 +Arduino IDE のシリアルモニタを開いているとポートが使用中になります。 +PHP スクリプト実行前にシリアルモニタを閉じてください。 ### ボーレートの確認 - `echo.ino`: 9600bps - `led_control.ino`: 115200bps -PHPコードとArduinoコードのボーレートが一致していることを確認してください。 +PHP コードと Arduino コードのボーレートが一致していることを確認してください。