*

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

ではっ!

関連記事

no image

C言語でEV3開発(9)-opOUTPUT_SPEEDコマンド

どもです。 今回のエントリーでは、前回に引き続きEV3のモーターを動かしていきます。 ただし、単

記事を読む

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

MindStormControl_SprachScreen

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

どもです。 前回に引き続き、今回もC#/WPFでの独自UI(ユーザーコントロール)の作成についての

記事を読む

raspberry-pi

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

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

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

どもです。 今回は、Ev3の移動距離の算出についてです。 1.算出方法について 移動距離は

記事を読む

Arduino_Logo

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

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

記事を読む

Splash

EV3開発サポートツール(3)-Ev3Controller

どもです。 今回は、以前ちらりと紹介した、Ev3のモーターの出力を調整するアプリケーションについて

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

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

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

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

記事を読む

eclipse_4.3_kepler

elicpse/CDTでのgdbでのソースを追従したデバッグができない問題

どもです。 今回のエントリーは、Eclipse上でgdbを利用したデバッグ中に発生する問題について

記事を読む

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

GitHub
C/C++のスタブを自動生成するツールを公開しました

(テーマ) C/C++のスタブを自動生成するツールを公開しました

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

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

no image
PC自作2019 – Windows10への移行

どもです。 突然ですが、PCを交換しました。 1. 何があ

RasPi_Qt
QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画

raspberry-pi
RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiから

→もっと見る

PAGE TOP ↑