*

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開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

OpenCvLogo

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

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

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

raspberry-pi

libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryPi3とArduinoでSPI通

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

toppers

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

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

記事を読む

Qt_logo_2016

QtでRaspberryPi/GUI開発(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="">

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

どもです。 突然ですが、「Arduino nano」互換(なのか?)

raspberry-pi
libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryP

RasPi_Qt
QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その3)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱ

RasPi_Qt
QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その2)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱ

raspberry-pi
QtでRaspberryPi/GUI開発(9)-SPI通信をしてみた

どもです。 えー。 「Qtで…」とか書いておきながら、今回はQtは

→もっと見る

PAGE TOP ↑