*

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の点灯の基本(と考えている)内容を書いてみました。
またしても、タッチスクリーンに触れることがありませんでした。
次こそは…っ!

ではっ!

関連記事

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

think_about_utest

VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単体テストの効率化について書いて

記事を読む

Arduino_Logo

フォトレジスタを使ってみた-Arduinoで光検出

どもです。 今回は、タイトル通り「フォトレジスタの使い方」です。 1.フォトレジスタって何?

記事を読む

no image

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

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

記事を読む

Arduino_Logo

ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてです。 1.「ホールセンサ

記事を読む

Arduino_Logo

ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。 1.前回からの違い 前回の

記事を読む

no image

C言語でEV3開発(8)-opOUTPUT_POWERコマンド

どもです。 今回のエントリーでは、EV3でモーターを動かします。 なお、今回のエントリーでも

記事を読む

Arduino_Logo

Arduino nano(中華版)をセットアップしてみた

どもです。 突然ですが、「Arduino nano」互換(なのか?)の中華ボードを手に入れました。

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

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

記事を読む

think_about_utest

単体テストの効率化を考える(3)-スタブの引数

どもです。 「単体テストの効率化について考える」の3回目です。 1回目、2回目はコチラ:

記事を読む

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="">

think_about_utest
VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単

think_about_utest
VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStud

think_about_utest
VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発してい

think_about_utest
単体テストの効率化を考える(6)-スタブの自動生成ツール

どもです。 「単体テストの効率化について考える」の6回目です。

think_about_utest
単体テストの効率化を考える(5)-スタブの自動生成への入力

どもです。 「単体テストの効率化について考える」の5回目です。

→もっと見る

PAGE TOP ↑