====== 4-2 Arduinoのソケット解説 ====== 電気の話がひと段落したので、今度はArduinoの話です。 Arduinoで電子部品を動かしたい場合、当然ながらArduinoに電子部品を繋ぐ必要があります。 Arduinoには、電子部品を繋ぐためのソケットがたくさんついていますが、どのソケットにどんな部品を繋ぐべきかはある程度決まっているので、それについて解説します。 ===== Arduinoのソケットを見てみよう ===== {{:gimmickkouza:electronic_basic:4:4-15.png?400|}} 図中上下の赤い枠で囲われた部分が、電子部品を繋げるためのソケットです。 個別解説したいのですが、写真ではちょっとわかりにくいので模式図を用意します。        {{:gimmickkouza:electronic_basic:4:4-16.png?800|}} そんなわけで、この図を用いて各ソケットの解説を順番にしていきます。 === 電源関連 === {{:gimmickkouza:electronic_basic:4:4-17.png?800|}}    文字通り、電源に関連した入出力のソケットです。 下段左3つのBOOT/IOREF/RESETについては、本資料では使わないので説明は割愛します。 == 3.3V == 電子部品に電気を供給するソケットです。ここに挿した部品に3.3Vの電圧で電気を流し続けます。 == 5V == 3.3Vと同じ役割ですが、こちらは5Vの電圧で電子部品に電気を流し続けます。 == GND == -極のソケットです。Arduinoに繋いだ部品に流れた電気が戻ってくる終着点です。 上段に1か所、下段に2か所挿し口がありますが、どれに繋いでもOKです。 == VIN == これは電子部品を動かすためのソケットではなく、Arduino"に"電気を供給するためのソケットです。 一般的にArduinoには、電源ジャックに繋いだACアダプタか、USBに繋いだケーブルから電気を供給しますが、第3の方法として、このVINピンに何らかの電源を接続することでもArduinoを動作させることができます。 ちなみにVINからR4に電気を供給する場合は6V~24Vの電源が必要です。    === アナログ入力 === {{:gimmickkouza:electronic_basic:4:4-18.png?800|}}    アナログ入力をする電子部品は、このA0~A5のソケットに接続します。 アナログ入力の仕組みは、"部品の抵抗の値を変化させて、電圧の変化を読み取る"というもので、代表的な部品は… * 音量等を調節する「ボリューム」(つまみを回して抵抗値を変化させる) * コントローラに使われる「ジョイスティック」(スティックの角度で抵抗値が変わる) * 明るさの変化を検知する「CdSセル」(明るさによって抵抗値が変わる) などがあります。 また[[gimmickkouza:electronic_basic:3:10_if|]]でも出てきたように、プログラムで乱数を発生させたい場合に、部品を繋いでいないアナログ入力のポートを利用することもあります。 /*3-10は内部リンクあってもいいかも [[gimmickkouza:electronic_basic:3:10_if|]]*/ === PWM === {{:gimmickkouza:electronic_basic:4:4-19.png?800|}}    Arduinoではアナログ入力(=電圧の変化を読み取る)はサポートしている一方、アナログ出力(=電圧を無段階で出力する)をすることはできません。 (R4は除く…ゴニョゴニョ) その代わりに、PWM(パルス変調(Pulse Width Modulation))という出力方式を利用することで、疑似的なアナログ出力を実現しています。 そのPWMに使うことができるのが、このPWMと書かれたソケットたちです。 (PWMの詳細はチュートリアルパートで後述します。第6章をお楽しみに!) PWMが使えるソケットは、デジタル入出力に使うソケットと兼用になっています。 デジタル入出力に使えるソケットのうち、番号の前に「~」がついているソケットがPWM対応です。    === デジタル入出力 === {{:gimmickkouza:electronic_basic:4:4-20.png?800|}}    デジタル入力をする電子部品と、デジタル出力をする電子部品を挿すソケットです。 全てのソケットは入力・出力のどちらでも使えます。どちらで使うかはプログラムで指定します。 デジタル入出力では、「0」か「1」の2つの状態を扱うことができます。 「0」=「電圧が0V」 入力が「0」…ソケットに何も入力がない、電気信号がない状態 出力が「0」…ソケットに電気を流していない状態 「1」=「電圧が5V(※)」 入力が「1」…5Vの電圧の電流を検知した状態 出力が「1」…ソケットから5Vの電圧で電気を流している状態 ※Arduino Unoの場合は5Vですが、この電圧の値はボードによって変わります    デジタル入出力をするパーツは… * ON/OFFを切り替えるタクトスイッチ(デジタル入力。ボタンを押している瞬間が「1」) * LED球(デジタル出力。「0」で消灯、「1」で点灯します) * 電子ブザー(デジタル出力。「0」では無音、「1」でブザーが鳴ります) などがあります。       ---- 下の3つは、ちょっと複雑な通信方法をする電子部品を繋ぐソケットです。 どれも第6章で解説が出てきますので、ここでは詳しいことは説明しません。 とりあえず今は「そういうソケットもあるんだな~」とふんわり思っていただければOKです。    === UART === {{:gimmickkouza:electronic_basic:4:4-21.png?800|}}    UART(ユーアート)という通信方式でデータをやり取りする電子部品を繋ぐソケットです。 TX(Transmitter:送信)とRX(Receiver:受信)の2本の信号線を通信に使うのがUARTの特徴です。 電子部品にTX/RXというピンがあれば、UARTを使う部品と見分けることができます。 接続の仕方はArduinoのTXに部品のRXを、ArduinoのRXに部品のTXを、互い違いに繋ぎます。 UARTは無線通信モジュールや各種センサなど、様々な電子部品で採用されています。    === I2C === {{:gimmickkouza:electronic_basic:4:4-22.png?800|}}    I2C(アイ・スクエアド・シーまたはアイ・ツー・シー)という通信方式の電子部品はここに繋ぎます。 I2CもUARTと同じように、「SCL(Serial Clock)」と「SDA(Serial Data)」と呼ばれる、2本の信号線を使って接続します。 繋ぎ方は、Arduinoと部品のSCL同士、SDA同士を繋げばOKです。 文字表示できるLCDやOLED、各種センサ類など、幅広い電子部品で使われています。    === SPI === {{:gimmickkouza:electronic_basic:4:4-23.png?800|}}    SPIは上2つと比べると、接続する線がちょっと多めの通信方式です。 SPIでは「SCK【CLK】」、「CIPO(MISO)【DO】」、「COPI(MOSI)【DIN】」、「CS(SS)」の4線を使います。 (もともと( )内の名称で呼ばれていましたが、近年ポリコレ的観点から読み替えがすすめられています。また【 】は別称です。部品によってはこの表記だったりします。ややこしいよ!!!) こちらもArduinoと部品で対応する名前のピンを繋げばOKです。 ソケットはデジタル入出力の10~13に、兼用としてあてがわれています。 ちなみにSPIはディスプレイなんかに非常によく使われている印象があります。