*

QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

公開日: : C++, C言語, pigpio, Qt, RaspberryPi, 開発

どもです。
RaspberryPiを購入して、LEDも手に入れたのでコレをチカらせてみようと思います。

1.RaspberryPiでLEDをチカらせるために
RapsberryPiでLEDをチカらせるためには、いくつか方法があります。
中でも代表的なものとして、「pigpio」というライブラリがあります。
今回は、このライブラリを使用してみます。

2.pigpio
まず、pigpioのインストールですが、今回は必要ありませんでした。
というのは、下記の環境では予めインストールされていたからです。
なので、インストールされていたものをそのまま使用します。

(実行環境)
H/W:RaspberryPi3
OS:Raspbian 9.4(stretch)

3.早速チカらせてみよう
まずは、単純にLEDをチカらせて見ます。
そのためのコード、およびビルドのコマンドを示します。

ビルド:

で、上記アプリケーションを実行した様子は、下記の通りです。

このアプリケーションでは、GPIOの6、13、19、26のピンをOUTPUTとして設定し(gpioSetMode)、それぞれを順番に点灯(gpioWrite(PIN, 1))/消灯(gpioWrite(PIN, 0))させています。

4.ボタン割込みをしてみよう
次に、ボタン押下した際にLEDのON/OFFが切り替わるようにしてみました。
実際のコードを示します。

IRQHandler()が、ボタンが押された際に呼び出される関数になります。
ボタンが押された際にこの関数が呼び出されるように、gpioSetISRFunc()で設定しています。
gpioSetISRFunc()の第1引数では、割り込みのトリガとなる電位の変化を読み取るGPIOピンの番号、第2引数は電位の変化の方向(LOW→HIGH/HIGH→LOW)、第3引数はタイムアウト、第4引数は割込みハンドラを指定します。
コレにより、GPIOピンの電位がLOWからHIGHに変化した際に、IRQHandler()が呼び出されるように設定しています。
割込みハンドラ(IRQHandler())は、第1引数の”gpio”には割込みを発生させたピン番号(GPIOの番号)が、第2引数のlevelには、high(1)/low(2)が指定されます。
第3引数は、起動後の時間(マイクロ秒)がセットされています。
なお、割込みハンドラは、実際に割り込みが発生しなくても呼び出されることがあります。
それは、「タイムアウト」が発生したタイミングです。
このタイムアウトは、gpioSetISRFunc()の第3引数で指定します。
この「タイムアウト」に「0」を指定することでタイムアウトが発生しなくなり、本当に割り込みが発生した場合にのみ、割込みハンドラが呼び出されるようにできます。

上記のアプリケーションの実行の際のピン配置を、下図に示します。
pin_layout_interrupt
また、実行した様子の動画を公開します。

以上、今回のエントリーでは、pigpioを使ったLEDの点灯の基本(と考えている)内容を書いてみました。
またしても、タッチスクリーンに触れることがありませんでした。
次こそは…っ!

ではっ!

関連記事

OpenCvLogo

OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、ということに挑戦し始めました。 しか

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用したLEDの点灯/消灯について書

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きました。 今回からは、このタッ

記事を読む

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

OpenCvLogo

RaspberryPiで物体検出(1)-白線検出への挑戦(1):輪郭検出による白線検出

どもです。 今回は、OpenCvを用いて道路の白線検出について、です。 1.今回の環境 O

記事を読む

toppers

C言語でEV3開発(25)-Q_Learningを実装してみた…が!?

どもです。 今回の内容は、「失敗しました」という内容です。 最近、流行になっている深層学習/

記事を読む

no image

C言語でEV3開発(13)-opOUTPUT_STEP_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである 「opOUTPUT_STEP_S

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

raspberry-pi
QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

どもです。 前回のエントリーで、pigpioを使用したチャタリング対

RasPi_Qt
QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用し

RasPi_Qt
QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたので

RasPi_Qt
QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きま

raspberry-pi
RaspberryPi3対応のタッチスクリーンを買いました

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリ

→もっと見る

PAGE TOP ↑