GPIO【General Purpose Input/Output】
GPIOとは?

装置が外部とデジタル信号をやり取りできる汎用の端子で、ピンの数や端子形状、信号形式、どのピンが入力あるいは出力であるかなどは定まっておらず、ソフトウェア側で任意に設定することができる。有効・無効も切り替えることができ、GPIOを備えた装置でも初期の設定では使用しないようになっている場合もある。
入力として使用する場合はスイッチやセンサーなどからの電圧状態を読み取り、出力として使用する場合はLEDの点灯やリレーの駆動などを行う。多くの場合、論理値として高電圧(High)と低電圧(Low)の二値を扱い、これをビット値の「0」と「1」に対応付けて制御する。端子はCPU内部のレジスタに対応しており、ビット単位で値の書き出しや読み出しを行うことができる。
各ピンは入力専用、出力専用、入出力兼用に分かれている場合がある。ピンの状態が入力でも出力でもない不定状態(フローティング)になると読み取り値が不安定になるため、内部にプルアップ抵抗やプルダウン抵抗を用いてピンの電位を安定させる手法が用いられる。割り込み機能を備えたGPIOもあり、電圧変化を契機としてプログラムの処理を即座に切り替えることができる。定期的に状態を監視するポーリング処理を減らして効率的なイベント検出が可能となる。
GPIOピンはICチップなど小さな製品では数本の場合もあるが、電子基板などでは様々な使い方ができるよう数十本用意されていることもある。Raspberry PiやArduinoといったシングルボードコンピュータや開発ボードには、GPIOピンが複数列に並んだヘッダ(端子台)が搭載されており、電子工作や組み込み開発の学習環境として広く普及している。複数のピンをまとめて入力あるいは出力に用いる場合、このピンのグループを「GPIOポート」ということがある。