# I/O (GPIO/ADC/DAC/PWM) *詳しくは [Arduino](http://www.arduino.cc) の マニュアルを見てください* *便宜上、M5Stackに関連の深いものに絞って説明します* **M5STACK割り当て:** | pin番号 | 名称 |割り当て先| | --- | --- | --- | | 0 | G0 |ダウンローダ | | 1 | T1 |UART | | 2 | G2 |側面端子(M5FIREを除く),M5-BUS| | 3 | R1 |UART | | 4 | G4 |TF| | 5 | G5 |側面端子(M5FIREを除く),M5-BUS| | 6 | G6 |SDIO | | 7 | G7 |SDIO | | 8 | G8 |SDIO | | 9 | G9 |SDIO | | 10 | G10 |SDIO | | 11 | G11 |SDIO | | 12 | G12 |LCD | | 13 | G13 |LCD | | 14 | G14 |LCD | | 15 | G15 |LCD | | 16 | R2 |UART | | 17 | T2 |UART | | 18 | G18 |TF,上面端子(SCK),M5-BUS| | 19 | G19 |TF,上面端子(MISO),M5-BUS| | 21 | G21 |GROVE-A(SDA)| | 22 | G22 |GROVE-A(SCL)| | 23 | G23 |TF,上面端子(MOSI)| | 25 | G25 |スピーカ,側面端子(M5FIREを除く),M5-BUS| | 26 | G26 |側面端子(M5FIREを除く),M5-BUS| | 27 | G27 |LCD | | 32 | G32 |LCDバックライト | | 33 | G33 |LCD | | 34 | G34 |なし | | 35 | G35 |側面端子(M5FIREを除く)| | 36 | G36 |側面端子(M5FIREを除く)| | 37 | G37 |Cボタン| | 38 | G38 |Bボタン| | 39 | G39 |Aボタン| ## digitalRead() **構文:** int digitalRead(uint8_t pin); **説明:** 端子の状態を読み取ります。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8 |ピン番号 | **戻り値:** ピンの電圧入力状態(0/1) **注意** 1)ピンモードがINPUTになっていない場合は正しい結果を返しません。 2)バスに他の回路がある場合、その影響を受けます。 **使用例;** ```arduino uint32_t pin21_data; pin21_data = digitalRead(21); ``` ## digitalWrite() **構文:** void digitalWrite(uint8_t pin, uint8_t val); **説明:** 端子の状態を書き込みます。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8 |ピン番号 | | val | uint8 |出力状態(0/1) | **戻り値:** なし **注意** 1)ピンモードがOUTPUTになっていない場合は正しい結果を返しません。 2)バスに他の回路がある場合、物理的に破損する可能性があるため、注意してください。 **使用例;** ```arduino digitalWrite(2,1); ``` ## pinMode() **構文:** void pinMode(uint8_t pin, uint8_t mode); **説明:** 端子の入出力モードを設定します **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8 |ピン番号 | | mode | uint8 |INPUT,OUTPUT,INPUT_PULLUPのいずれか| **戻り値:** なし **注意** バスに他の回路がある場合、物理的に破損する可能性があるため、注意してください。 例えば、スピーカ(G25)端子をINPUTモードにすると、スピーカへ流れる電流により本体が発熱します。 故障の恐れがあるため、指示内容が正しいことを確認してください。 **使用例;** ```arduino pinMode(2,INPUT); ``` ## analogRead() **構文:** uint16_t analogRead(uint8_t pin); **説明:** アナログ端子の値を読み取ります。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8 |ピン番号 | **戻り値:** 読み取り結果。返答の最大値はanalogSetWidth()で決定します。 **注意** M5StackではG35,G36が使用できます。 **使用例;** ```arduino uint16_t ret; ret=analogRead(35); ``` ## dacWrite() **構文:** void dacWrite(uint8_t pin, uint8_t value); **説明:** アナログ端子に出力指示をします。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8 |ピン番号 | | value | uint8 |出力指示電圧 | **戻り値:** なし。 **注意** M5StackではG25,G26が使用できます。 **使用例;** ```arduino dacWrite(25,0x40); ``` ## ledcSetup() **構文:** double ledcSetup(uint8_t channel, double freq, uint8_t resolution_bits); **説明:** デューティ出力設定をします **引数** | 引数 |型 |説明 | | --- | --- | --- | | channel | uint8 |チャネル(0~15) | | freq | double |周波数(Hz) | | resolution_bits | uint8_t |デューティ指示のフルスケールビット数 | **戻り値:** 実際の出力周波数。 **注意** チャンネルとGPIOポート番号は同一ではありません。 設定を記憶するための番号だと認識するとよいでしょう。 ## ledcAttachPin() **構文:** void ledcAttachPin(uint8_t pin, uint8_t chan); **説明:** 出力するポートを指定します。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8_t |ピン番号) | | chan | uint8_t |チャネル(0~15) | **戻り値:** なし ## ledcWrite() **構文:** void ledcWrite(uint8_t chan, uint32_t duty); **説明:** 指定したデューティ値で出力します。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | chan | uint8_t |チャネル(0~15) | | duty | uint32_t |デューティ | **戻り値:** なし **注意** デューティの単位は、初期化時に設定したビットスケールに依存します。 8ビットで指示していた場合は 0xFF を指定すると100%出力になります。 ## ledcDetachPin() **構文:** void ledcDetachPin(uint8_t pin); **説明:** 割り当てたポートを解放し、出力をやめます。 **引数** | 引数 |型 |説明 | | --- | --- | --- | | pin | uint8_t |ピン番号) | **戻り値:** なし