マイコンのI/Oの基本となる「GPIO」の使い方今岡通博の俺流!組み込み用語解説(5)(1/2 ページ)

今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラム。第5回で取り上げるのは「GPIO」だ。

» 2024年08月29日 07時00分 公開
[今岡通博MONOist]

はじめに

 今まではこの「はじめに」を読者のみなさんにこの記事(筆者から言えば原稿ですが)を最後まで読んでもらうためのモチベーションを保つために書いておりました。この記事の原稿の文字数は大体3000〜4000字なのですが、著者としてもその文字数を書き切るのはそれなりに大変です。できれば一気に書き上げた方が記事に一貫性が生まれて良いのですが、そのモチベーションを保つために今回はこの章を筆者都合で使わせてもらいます。

 この組み込み用語解説のシリーズを始めるに当たり、担当編集からいただいたお題が「GPIO」だったのですが、実のところこのテーマでそれなりの文字数を維持する、絞り出すのはそれなりの勢いが必要でした。そんなわけでこの「はじめに」で原稿を執筆するに当たり所信表明しそのモチベーション維持して原稿を書こうと思った次第です。どうなることやら分かりませんが早速執筆を始めます。最後まで楽しんでください。

⇒連載「今岡通博の俺流!組み込み用語解説」バックナンバー

筆者の今岡氏が「Open Source Conference 2024 Hiroshima」に登壇!

広島で開催されるオープンソースの祭典「Open Source Conference 2024 Hiroshima」の講演に、本連載筆者の今岡氏が登壇します。詳細は以下のイベントURL、講演概要のURLからご確認ください。

講演日時:2024年9月29日(日)16:00〜16:45

講演タイトル:今こそはじめてみようFPGA(初学者大歓迎)

会場:サテライトキャンパスひろしま(広島県民文化センター5F)

イベントURLhttps://event.ospn.jp/osc2024-hiroshima/

講演概要のURLhttps://event.ospn.jp/osc2024-hiroshima/session/1712836

GPIOとは

 GPIO(General-Purpose Input/Output)は、日本語では汎用入出力と呼ばれています。マイコンで外部機器の制御や外部機器からの出力を取り込むために用います。言葉の通り、GPIOはそれぞれを入力端子あるいは出力端子としてビット単位で設定が可能です。

 マイコンのI/Oとしては基本中の基本で、初心者向けのLEDの点滅いわゆる「Lチカ」などで必ず用いられています。

GPIOを出力端子として用いる

 GPIOを出力端子として用いる場合は、プログラム側で0あるいはLOWをこのGPIOのレジスターに書き込むと、設定された出力端子はグランドに短絡し0Vに近い電位になります。

 一方プログラム側で1あるいはHIGHを書き込むと、VCC、いわゆるマイコンに供給している+電位に近い電圧が出力されます。

図1 図1 GPIOを出力端子に設定してLEDを点灯する回路図[クリックで拡大]

 図1はGPIOを出力設定した場合の使用例を示す回路図です。GPIOの出力でLED(発光ダイオード)を点灯させる回路になっています。

 LEDは、言わずと知れた電流を流すと光を放つダイオードです。ダイオードという半導体は極性があり一方向にしか電流は流れません。図1の右下にあるのがLEDです。ダイオードは両端にリード線があり、三角形の底辺側の電極をアノードと呼びます。また、その反対側になる三角形の頂点とつながっている電極をカソードと呼びます。電流はアノードからカソードの方向にのみ流れ、その際にLEDは光を放ちます。

 図1では、出力端子として設定したGPIOから抵抗(R1)を介してLEDのアノードに接続されています。そしてその反対側のカソードはグランド(GND)に落とします。なお、グランドはマイコンに供給されている電源のマイナス側に接続されています。

 リスト1は、図1の回路図のLEDを点灯させるためのプログラムです。マイコンはArduinoシリーズで動作させることを前提としています。setup()関数内で書かれたプログラムを示していますが、このsetup()内のコードはマイコンが始動した後、1度だけ実行されます。

void setup() { 
  pinMode(outPin, OUTPUT); 
  digitalWrite(outPin, HIGH); 
}
リスト1 図1の回路図のLEDを点灯させるためのプログラム

 pinMode関数は指定したGPIO端子の入力あるいは出力を設定します。第1引数のoutPinで指定したGPIO端子を出力として設定します。第2引数の“OUTPUT”は出力端子として設定します。

 outPinはdefine文あるいはグローバル変数などで値が設定されているものとします。

 そして、次の行のdigitalWrite関数ですが、これは指定したGPIO端子に1あるいは0を書き込む関数です。第1引数で出力値を書き込みたいGPIOの端子番号を指定します。そして第2引数ではHIGHあるいはLOWを指定します。この例ではHIGHですので、指定したGPIOの出力はマイコンに供給されているプラス電位に近い電圧が出力されます。

 よって、リスト1のプログラムが実行されると図1の回路図のLEDは点灯することになります。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.