pinMode()
GPIOピンの動作を設定します。
書式
void pinMode(uint8 pin, WiringPinMode mode)
引数:
pin :設定するピン番号
mode :動作モード(WiringPinMode型 列挙変数)
WiringPinMode型 列挙変数の値
OUTPUT(基本的なデジタル出力モード)
ピンの状態がHIGHの場合、電圧は+ 3.3V(VCC)に保持され、LOWの場合はGNDにプルダウンされます。
OUTPUT_OPEN_DRAIN (オープンドレイン出力モード)
ピンの状態がLOWの場合、GNDへの電流に流し(吸い込み)、HIGHの場合はハイインピース状態となり電流を流しません。
使用例としては、ピンをバスラインに接続する方法があります(これは大きな抵抗を介して別の電源によって正の電圧にプルアップされます)。 ピンがHIGHのとき、電流はGNDに流れず、ラインは正の電圧のままです。 ピンがLOWのとき、バスは外部電源から抵抗を介して電流をGNDに "吸い込み"ます。このモードでは、実際にピンから電流が供給されることはありません。
INPUT (基本的なデジタル入力モード)
ピンの電圧を取得します。その電圧が3.3V(VCC)近辺では、HIGHを返し、0V(GND)近辺の場合はLOWを返します。
もしピンがHIGHまたはLOWに接続されていない浮いた状態の場合は、ノイズの影響によりランダムに発振しやすくなります(例えば、ピンに触れる風の流れによって状態が反転する可能性もあります)。
INPUT_ANALOG (アナログ入力モード)
これはアナログ値を読むための特別なモードです。
ピンに入力される電圧値をアナログから数値に変換することが出来ます。
INPUT_PULLUP (プルアップ指定のデジタル入力)
このモードでのピンモードの状態はINPUTと同じですが、ピンの電圧は3.3Vでプルアップされます。
ピンへの接続がGNDに接続されない限り、入力状態はHIGH(3.3V)となることを意味します。
INPUT_PULLDOWN (プルダウン指定のデジタル入力)
このモードでのピンモードの状態はINPUTと同じですが、ピンの電圧は0V(GND)でプルダウンされます。
ピンへの接続がHIGH(3.3V)に接続されない限り、入力状態はLOW(0V)となることを意味します。
INPUT_FLOATING
INPUTと同じです。
PWM (PWM出力)
ピンをPWM出力として利用するモードです(デジタル出力の特殊な形式)。
PWM_OPEN_DRAIN (オープンドレインPWM出力)
PWMに似ていますが、ピンの電圧はLOWとHIGHの交互のサイクルではなく、LOWとフローティング(切断)の交互のサイクルで構成されています。
解説
通常、pinMode()関数によるピンのモード設定の記述はsetup()内で行います(pinMode()はどこからでも呼び出せます)。
利用例
このサンプルプログラムはpinMode()を使い、ボード上のLEDに接続しているPC13ピンをOUTPU(出力)に設定しています。
この設定により、digitalWrite()を使ってピン出力をHIGHまたはLOWにして、LEDの点灯または消灯を行うことが出来ます。
code:sample.ino
void setup() {
pinMode(BOARD_LED_PIN, OUTPUT); // sets the LED pin as output
}
void loop() {
digitalWrite(BOARD_LED_PIN, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(BOARD_LED_PIN, LOW); // sets the LED off
delay(1000); // waits for a second
}
Arduinoとの互換性
Arduino STM32において, pinMode() 関数で指定するINPUTとOUTPUTモードはArduinoと同じ動作をします(ただし、Arduino STM32は3.3Vデバイスあるため、OUTPUTモード時のピンのHIGHの状態は5Vではなく3.3Vとなります)。
INPUT_ANALOG と PWM モードは追加されました。Arduino STM32でではArduinoと異なりアナログとデジタルピンが分かれていません。INPUT_ANALOG と PWM モードを利用する場合は(例えばanalogRead()を利用する)、事前にpinModfe()でピンのモード設定を行う必要があります。この設定はsetup()関数内で記述すると良いでしょう。
関連記事
Board-Specific Values
Constants
GPIO
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。