マイコンのI/Oの基本となる「GPIO」の使い方:今岡通博の俺流!組み込み用語解説(5)(2/2 ページ)
今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラム。第5回で取り上げるのは「GPIO」だ。
GPIOを入力端子として用いる
GPIOを入力端子として用いると、この端子に印加できる電圧の上限はこのマイコンに供給している電源の電圧となります。この端子に閾値より高い電圧を印加すると、マイコンがこのポートを読み出す際に1の値を取得できます。また、閾値より低い電圧を印加すると、マイコンからは値として0が検出されます。この閾値は0か1を判断するボーダーの値となるわけですが、一般的にはマイコンに供給する電圧の半分より少し上回る電圧となります。例えば、Arduinoに多く搭載されているマイコンのAtmega328シリーズだと、VCCが5Vの場合、約2.87Vとなります。
正確な値はお使いのマイコンのデーターシートで確認してください。英語では閾値は“threshold”ですので、データーシートが英語の場合はこのキーワードを手掛かりに検索してみてください。
さて図2は、タクトスイッチの押下をGPIOで検出するための回路図です。
入力端子に設定されたGPIOはタクトスイッチの一端に接続します。そしてタクトスイッチのもう一端はグランドに接続します。タクトスイッチが押下されるとスイッチの両端が導通しますのでマイコンの入力端子はグランド電位に落ちます。この時点で、入力端子をマイコン側から読み込むとその値は0となります。それでは、タクトスイッチが押下されていない場合はどうでしょうか。その場合、連載第3回で紹介したプルアップ抵抗によりVCC電位に引っ張られていますので、入力端子は高電位になり、マイコンから読み込むとその値は1となります。
リスト2はタクトスイッチの押下の有無を読み込むプログラムとなります。まずsetup関数内では指定したピン番号を入力端子として設定しています。第1引数のinPinで入出力を設定したいピン番号を指定しています。第2引数はINPUTを指定していますので、指定したピンは入力に設定されます。
void setup() { pinMode(inPin, INPUT); } void loop() { val = digitalRead(inPin); }
setup関数がマイコンが起動して一度だけ実行される関数でしたが、次のloop関数は一定時間で何度も実行される関数です。
この関数内では指定した入力ピンの値をval変数に代入しています。digitalRead関数で指定した入力ピンの値を読み込みます。
図3はマイコン内でGPIOにプルアップ抵抗を設定した場合の回路図です。
これはマイコン内部で入力端子をプルアップ設定していますので、マイコン外部にプルアップ抵抗を付ける必要がなくなります。
void setup() { pinMode(inPin, INPUT_PULLUP); } void loop() { val = digitalRead(inPin); }
リスト3は指定したGPIOを入力端子に設定し、さらにその端子にプルアップ抵抗を配したプログラムになります。それらはリスト上のsetup関数で行っています。先に示したリストと異なるところはpinMode関数の第2引数が“INPUT”だったところが“INPUT_PULLUP”に置き換わっています。それ以外のところはリスト2と同じです。
この機能を使えば外付け抵抗を1つ減らすことができるので電子工作的にはとても楽になります。また複数の入力端子を用いる場合は、その端子ごとにプルアップ抵抗を付ける必要がありますが、この機能を用いればさらに楽になります。
おわりに
ここで、やっと「おわりに」に到達しました。皆さんもここまで到達されたということで、それは何より筆者にとってうれしいことです。ここまでお付き合いいただきありがとうございました。
今回はマイコンの入出力端子の中で最も基本的なGPIOを取り上げました。次回以降はその応用やさらに高度な入出力端子などについて解説していきたいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「今岡通博の俺流!組み込み用語解説」バックナンバー
- ≫連載「注目デバイスで組み込み開発をアップグレード」バックナンバー
- オープンコレクタがなければマイコンと外部機器はきちんと接続できない?
今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラム。第4回で取り上げるのは「オープンコレクタ」だ。 - たかが抵抗1本されど抵抗1本、プルアップ抵抗の役割とは
今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラム。第3回で取り上げるのは「プルアップ抵抗」だ。 - 組み込み開発の基本の基になるトランジスタの話
今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラム。第2回で取り上げるのは「トランジスタ」だ。 - 電子回路の「アイソレーション」を考える
今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラムがスタート。第1回で取り上げるのは「アイソレーション」だ。 - 分かっておきたいトランジスタの種類
筆者が選ぶ「これだけは押さえておきたいトランジスタの種類」を紹介。今回の主役はバイポーラトランジスタとダーリントントランジスタだ