# 回路図(https://circuit.sapp.jp)の指示文(Arduino とセンサー用) ハッカソンなどで、Arduino とセンサー・LED・スイッチをつなぐ回路を描くための指示文です。高校の電気回路の部品(電球・電流計など)は省いてあります。全部の部品を使うときは `prompt_for_ai.md` を使ってください。 使う機種(Arduino のシリーズ)とセンサーの `part` 定義を、下の「使う機種とセンサー」に書き足してから AI に渡すと、ピン名の書き間違いが減ります。 --- これから Arduino を使った回路を、回路図作図ツール「回路図」(https://circuit.sapp.jp)のテキスト記法で書いてもらいます。以下の規則だけを使ってください。規則にない書き方はエラーになります。説明は不要で、テキスト記法だけを 1 つのコードブロックで出力してください。 ## 書き方 1 行に 1 つの文を書きます。`#` から行末まではコメントです。 - 部品を置く: `名前 = 種類 値`(例 `R1 = R 220Ω`、`D1 = LED 赤`、`U1 = ArduinoUno`)。名前は英字で始まる英数字と `_`。値は省略でき、図に書かれるだけです。値に `#`・`"`・`--` は使えません。 - つなぐ: `A -- B -- C`(`--` の前後に空白が必要)。`部品名.ピン名` は部品のピン(例 `U1.D13`)。`GND` と `5V`・`3.3V` は電源の記号になります。それ以外の置いていない名前(例 `sda`)は、同じ名前どうしが線で結ばれます。 - ピンが 2 本の部品(下の表でピンが 2 つ書かれているもの。`NOT` ゲートを除く)は、連鎖の途中に部品名だけで置けます: `U1.D13 -- R1 -- D1 -- GND`。連鎖の入る側(左)が表のピンの 1 番目で、LED では左がアノードです。連鎖の端には部品名だけを書けません。1 つの部品を部品名だけで書けるのは 1 回だけです。 - ボリューム(`POT`)・トランジスタ・MOS FET・オペアンプ・論理ゲート(`NOT` も含む)は、`VR1.2 -- U1.A0` のように必ずピンで書きます。 - オペアンプの電源のピン `V+`・`V-` は省略できます。電源の電圧を図に示したいときは `U4.V+ -- 5V`、`U4.V- -- GND` のようにつなぎます。 - 図が見にくいときは `place A below B`(`above` / `left` / `right` も可)で、部品 A を B の隣に置くよう指定できます。 - Arduino やセンサーは `part` で定義します。字下げした行に、ピンを出す辺(`top` / `left` / `right` / `bottom`)とピン名を書きます。電源は上、GND は下、入力は左、出力は右が読みやすい置き方です。`|` で 1 つ空きを入れ、`A4/SDA` のように `/` で別名を付けられます。IC など物理ピン番号を図に出したいときは `VCC@14` のように `@` の後に番号を書きます(つなぐときは名前で書きます)。 ``` part 種類名 "説明": top 5V left 入力のピン … right 出力のピン … bottom GND ``` ## 使える組み込みの部品 | 種類 | 部品 | ピン(1 番目が連鎖の入る側) | |---|---|---| | `R` | 抵抗 | `1` `2` | | `VR` | 可変抵抗 | `1` `2` | | `POT` | ボリューム(しゅう動接点付き抵抗器) | `1` `2` `3`(`2` が真ん中の足) | | `C` | コンデンサ | `1` `2` | | `CE` | 電解コンデンサ | `+` `-` | | `D` | ダイオード | `A` `K` | | `LED` | 発光ダイオード | `A` `K` | | `SW` | スイッチ | `1` `2` | | `PB` | 押しボタンスイッチ(タクトスイッチ) | `1` `2` | | `M` | モーター | `1` `2` | | `NPN` | NPN トランジスタ | `B` `C` `E` | | `PNP` | PNP トランジスタ | `B` `C` `E` | | `NMOS` | N チャネル MOS FET(エンハンスメント形) | `G` `D` `S` | | `PMOS` | P チャネル MOS FET(エンハンスメント形) | `G` `D` `S` | | `NMOSD` | N チャネル MOS FET(デプレッション形) | `G` `D` `S` | | `PMOSD` | P チャネル MOS FET(デプレッション形) | `G` `D` `S` | | `OPAMP` | オペアンプ | `+` `-` `OUT` `V+` `V-`(`V+`・`V-` は省略可) | | `NOT` | NOT ゲート | `A` `Y` | | `AND` | AND ゲート | `A` `B` `Y` | | `OR` | OR ゲート | `A` `B` `Y` | | `NAND` | NAND ゲート | `A` `B` `Y` | | `NOR` | NOR ゲート | `A` `B` `Y` | | `XOR` | XOR ゲート | `A` `B` `Y` | ## 守ってほしいこと - LED には必ず電流を制限する抵抗を直列に入れます。 - Arduino とセンサーの電源(`5V` または `3.3V`)と `GND` は、それぞれのピンから `U1.5V -- 5V`、`U2.GND -- GND` のように電源の記号につなぎます。 - モーターなど電流の大きい部品は Arduino のピンに直接つながず、トランジスタまたは MOS FET を通します。 - 下の「使う機種とセンサー」に定義がある部品は、その定義をそのまま使い、ピン名を変えないでください。 ## 使う機種とセンサー (ここに講義で使う機種とセンサーの `part` 定義を書きます。例:) ``` part ArduinoUno "Arduino Uno": top VIN 5V 3.3V IOREF left RESET AREF | A0 A1 A2 A3 A4/SDA A5/SCL right D0 D1 D2 D3 D4 D5 D6 D7 | D8 D9 D10/SS D11/MOSI D12/MISO D13/SCK bottom GND part HC-SR04 "超音波距離センサー": top VCC left TRIG ECHO bottom GND part GY-MAX4466 "マイクアンプ(MAX4466)": top VCC right OUT bottom GND ``` ## 例 ``` U1 = ArduinoUno U2 = HC-SR04 U3 = GY-MAX4466 R1 = R 220Ω D1 = LED 赤 R2 = R 10k S1 = PB U1.D13 -- R1 -- D1 -- GND U1.D2 -- S1 -- 5V U1.D2 -- R2 -- GND U1.D7 -- U2.TRIG U1.D8 -- U2.ECHO U1.5V -- 5V U2.VCC -- 5V U1.GND -- GND U2.GND -- GND U1.A0 -- U3.OUT # マイクの出力をアナログ入力へ U3.VCC -- 5V U3.GND -- GND ```